Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Digital image processing</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Digital_image_processing"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Digital_image_processing rootpage-Digital_image_processing skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Digital image processing</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">This article is about mathematical processing of digital images. For artistic processing of images, see <a href="Image_editing" title="Image editing">Image editing</a>. For compression algorithms, see <a href="Image_compression" title="Image compression">Image compression</a>.</div>
<p class="mw-empty-elt">
</p>
<div role="note" class="hatnote navigation-not-searchable">"Image processing" redirects here; not to be confused with <a href="Analog_image_processing" title="Analog image processing">Analog image processing</a>.</div>
<p><b>Digital image processing</b> is the use of a <a href="Digital_computer" class="mw-redirect" title="Digital computer">digital computer</a> to process <a href="Digital_image" title="Digital image">digital images</a> through an <a href="Algorithm" title="Algorithm">algorithm</a>.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Gonzalez_2018_p._2-0" class="reference"><a href="#cite_note-Gonzalez_2018_p.-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> As a subcategory or field of <a href="Digital_signal_processing" title="Digital signal processing">digital signal processing</a>, digital image processing has many advantages over <a href="Analog_image_processing" title="Analog image processing">analog image processing</a>. It allows a much wider range of algorithms to be applied to the input data and can avoid problems such as the build-up of <a href="Noise_(signal_processing)" title="Noise (signal processing)">noise</a> and <a href="Distortion" title="Distortion">distortion</a> during processing. Since images are defined over two dimensions (perhaps more), digital image processing may be modeled in the form of <a href="Multidimensional_system" title="Multidimensional system">multidimensional systems</a>. The generation and development of digital image processing are mainly affected by three factors: first, the development of computers;<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> second, the development of mathematics (especially the creation and improvement of <a href="Discrete_mathematics" title="Discrete mathematics">discrete mathematics theory</a>);<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> and third, the demand for a wide range of applications in environment, agriculture, military, industry and medical science has increased.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Digital_image#History" title="Digital image">Digital image §&nbsp;History</a>, and <a href="Digital_imaging#History" title="Digital imaging">Digital imaging §&nbsp;History</a></div>
<p>Many of the techniques of <a href="Digital_image" title="Digital image">digital image</a> processing, or digital picture processing as it often was called, were developed in the 1960s, at <a href="Bell_Laboratories" class="mw-redirect" title="Bell Laboratories">Bell Laboratories</a>, the <a href="Jet_Propulsion_Laboratory" title="Jet Propulsion Laboratory">Jet Propulsion Laboratory</a>, <a href="Massachusetts_Institute_of_Technology" title="Massachusetts Institute of Technology">Massachusetts Institute of Technology</a>, <a href="University_of_Maryland%2C_College_Park" title="University of Maryland, College Park">University of Maryland</a>, and a few other research facilities, with application to <a href="Satellite_imagery" title="Satellite imagery">satellite imagery</a>, <a href="Wirephoto" title="Wirephoto">wire-photo</a> standards conversion, <a href="Medical_physics" title="Medical physics">medical imaging</a>, <a href="Videophone" class="mw-redirect" title="Videophone">videophone</a>, <a href="Character_recognition" class="mw-redirect" title="Character recognition">character recognition</a>, and photograph enhancement.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> The purpose of early image processing was to improve the quality of the image. It was aimed for human beings to improve the visual effect of people. In image processing, the input is a low-quality image, and the output is an image with improved quality. Common image processing include image enhancement, restoration, encoding, and compression. The first successful application was the American Jet Propulsion Laboratory (JPL). They used image processing techniques such as geometric correction, gradation transformation, noise removal, etc. on the thousands of lunar photos sent back by the Space Detector Ranger 7 in 1964, taking into account the position of the Sun and the environment of the Moon. The impact of the successful mapping of the Moon's surface map by the computer has been a success. Later, more complex image processing was performed on the nearly 100,000 photos sent back by the spacecraft, so that the topographic map, color map and panoramic mosaic of the Moon were obtained, which achieved extraordinary results and laid a solid foundation for human landing on the Moon.<sup id="cite_ref-:1_7-0" class="reference"><a href="#cite_note-:1-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>The cost of processing was fairly high, however, with the computing equipment of that era. That changed in the 1970s, when digital image processing proliferated as cheaper computers and dedicated hardware became available. This led to images being processed in real-time, for some dedicated problems such as <a href="Television_standards_conversion" title="Television standards conversion">television standards conversion</a>. As <a href="General-purpose_computer" class="mw-redirect" title="General-purpose computer">general-purpose computers</a> became faster, they started to take over the role of dedicated hardware for all but the most specialized and computer-intensive operations. With the fast computers and signal processors available in the 2000s, digital image processing has become the most common form of image processing, and is generally used because it is not only the most versatile method, but also the cheapest.
</p>
<div class="mw-heading mw-heading3"><h3 id="Image_sensors">Image sensors</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Image_sensor" title="Image sensor">Image sensor</a></div>
<p>The basis for modern <a href="Image_sensors" class="mw-redirect" title="Image sensors">image sensors</a> is <a href="Metal%E2%80%93oxide%E2%80%93semiconductor" class="mw-redirect" title="Metal–oxide–semiconductor">metal–oxide–semiconductor</a> (MOS) technology,<sup id="cite_ref-Williams_8-0" class="reference"><a href="#cite_note-Williams-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> invented at Bell Labs between 1955 and 1960,<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Lojek1202_14-0" class="reference"><a href="#cite_note-Lojek1202-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> This led to the development of digital <a href="Semiconductor" title="Semiconductor">semiconductor</a> image sensors, including the <a href="Charge-coupled_device" title="Charge-coupled device">charge-coupled device</a> (CCD) and later the <a href="CMOS_sensor" class="mw-redirect" title="CMOS sensor">CMOS sensor</a>.<sup id="cite_ref-Williams_8-1" class="reference"><a href="#cite_note-Williams-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p><p>The charge-coupled device was invented by <a href="Willard_S._Boyle" class="mw-redirect" title="Willard S. Boyle">Willard S. Boyle</a> and <a href="George_E._Smith" title="George E. Smith">George E. Smith</a> at Bell Labs in 1969.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> While researching MOS technology, they realized that an electric charge was the analogy of the magnetic bubble and that it could be stored on a tiny <a href="MOS_capacitor" class="mw-redirect" title="MOS capacitor">MOS capacitor</a>. As it was fairly straightforward to <a href="Semiconductor_device_fabrication" title="Semiconductor device fabrication">fabricate</a> a series of MOS capacitors in a row, they connected a suitable voltage to them so that the charge could be stepped along from one to the next.<sup id="cite_ref-Williams_8-2" class="reference"><a href="#cite_note-Williams-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> The CCD is a semiconductor circuit that was later used in the first <a href="Digital_video_camera" class="mw-redirect" title="Digital video camera">digital video cameras</a> for <a href="Television_broadcasting" class="mw-redirect" title="Television broadcasting">television broadcasting</a>.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p><p>The <a href="NMOS_logic" title="NMOS logic">NMOS</a> <a href="Active-pixel_sensor" title="Active-pixel sensor">active-pixel sensor</a> (APS) was invented by <a href="Olympus_Corporation" title="Olympus Corporation">Olympus</a> in Japan during the mid-1980s. This was enabled by advances in MOS <a href="Semiconductor_device_fabrication" title="Semiconductor device fabrication">semiconductor device fabrication</a>, with <a href="MOSFET_scaling" class="mw-redirect" title="MOSFET scaling">MOSFET scaling</a> reaching smaller <a href="List_of_semiconductor_scale_examples" title="List of semiconductor scale examples">micron and then sub-micron</a> levels.<sup id="cite_ref-fossum93_17-0" class="reference"><a href="#cite_note-fossum93-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> The NMOS APS was fabricated by Tsutomu Nakamura's team at Olympus in 1985.<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> The <a href="CMOS" title="CMOS">CMOS</a> active-pixel sensor (CMOS sensor) was later developed by <a href="Eric_Fossum" title="Eric Fossum">Eric Fossum</a>'s team at the <a href="NASA" title="NASA">NASA</a> <a href="Jet_Propulsion_Laboratory" title="Jet Propulsion Laboratory">Jet Propulsion Laboratory</a> in 1993.<sup id="cite_ref-Fossum2014_20-0" class="reference"><a href="#cite_note-Fossum2014-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> By 2007, sales of CMOS sensors had surpassed CCD sensors.<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>
</p><p>MOS image sensors are widely used in <a href="Optical_mouse" title="Optical mouse">optical mouse</a> technology. The first optical mouse, invented by <a href="Richard_F._Lyon" title="Richard F. Lyon">Richard F. Lyon</a> at <a href="Xerox" title="Xerox">Xerox</a> in 1980, used a <a href="6_%CE%BCm_process" title="6 μm process">5<span class="nowrap">&nbsp;</span>μm</a> <a href="NMOS_logic" title="NMOS logic">NMOS</a> <a href="Integrated_circuit" title="Integrated circuit">integrated circuit</a> sensor chip.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup> Since the first commercial optical mouse, the <a href="IntelliMouse" title="IntelliMouse">IntelliMouse</a> introduced in 1999, most optical mouse devices use CMOS sensors.<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-hackaday_25-0" class="reference"><a href="#cite_note-hackaday-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Image_compression">Image compression</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Image_compression" title="Image compression">Image compression</a></div>
<p>An important development in digital <a href="Image_compression" title="Image compression">image compression</a> technology was the <a href="Discrete_cosine_transform" title="Discrete cosine transform">discrete cosine transform</a> (DCT), a <a href="Lossy_compression" title="Lossy compression">lossy compression</a> technique first proposed by <a href="N._Ahmed" class="mw-redirect" title="N. Ahmed">Nasir Ahmed</a> in 1972.<sup id="cite_ref-Ahmed_26-0" class="reference"><a href="#cite_note-Ahmed-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> DCT compression became the basis for <a href="JPEG" title="JPEG">JPEG</a>, which was introduced by the <a href="Joint_Photographic_Experts_Group" title="Joint Photographic Experts Group">Joint Photographic Experts Group</a> in 1992.<sup id="cite_ref-t81_27-0" class="reference"><a href="#cite_note-t81-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup> JPEG compresses images down to much smaller file sizes, and has become the most widely used <a href="Image_file_format" title="Image file format">image file format</a> on the <a href="Internet" title="Internet">Internet</a>.<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup> Its highly efficient DCT compression algorithm was largely responsible for the wide proliferation of <a href="Digital_images" class="mw-redirect" title="Digital images">digital images</a> and <a href="Digital_photo" class="mw-redirect" title="Digital photo">digital photos</a>,<sup id="cite_ref-Atlantic_29-0" class="reference"><a href="#cite_note-Atlantic-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup> with several billion JPEG images produced every day as of 2015.<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup>
</p><p>Medical imaging techniques produce very large amounts of data, especially from CT, MRI and PET modalities. As a result, storage and communications of electronic image data are prohibitive without the use of compression.<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup> <a href="JPEG_2000" title="JPEG 2000">JPEG 2000</a> image compression is used by the <a href="DICOM" title="DICOM">DICOM</a> standard for storage and transmission of medical images. The cost and feasibility of accessing large image data sets over low or various bandwidths are further addressed by use of another DICOM standard, called <a href="JPIP" title="JPIP">JPIP</a>, to enable efficient streaming of the <a href="JPEG_2000" title="JPEG 2000">JPEG 2000</a> compressed image data.<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Digital_signal_processor_(DSP)">Digital signal processor (DSP)</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Digital_signal_processor" title="Digital signal processor">Digital signal processor</a></div>
<p>Electronic <a href="Signal_processing" title="Signal processing">signal processing</a> was revolutionized by the wide adoption of <a href="MOS_technology" class="mw-redirect" title="MOS technology">MOS technology</a> in the 1970s.<sup id="cite_ref-Grant_34-0" class="reference"><a href="#cite_note-Grant-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup> <a href="MOS_integrated_circuit" class="mw-redirect" title="MOS integrated circuit">MOS integrated circuit</a> technology was the basis for the first single-chip <a href="Microprocessors" class="mw-redirect" title="Microprocessors">microprocessors</a> and <a href="Microcontrollers" class="mw-redirect" title="Microcontrollers">microcontrollers</a> in the early 1970s,<sup id="cite_ref-ieee_35-0" class="reference"><a href="#cite_note-ieee-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup> and then the first single-chip <a href="Digital_signal_processor" title="Digital signal processor">digital signal processor</a> (DSP) chips in the late 1970s.<sup id="cite_ref-computerhistory1979_36-0" class="reference"><a href="#cite_note-computerhistory1979-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Taranovich_37-0" class="reference"><a href="#cite_note-Taranovich-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup> DSP chips have since been widely used in digital image processing.<sup id="cite_ref-computerhistory1979_36-1" class="reference"><a href="#cite_note-computerhistory1979-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup>
</p><p>The <a href="Discrete_cosine_transform" title="Discrete cosine transform">discrete cosine transform</a> (DCT) <a href="Image_compression" title="Image compression">image compression</a> algorithm has been widely implemented in DSP chips, with many companies developing DSP chips based on DCT technology. DCTs are widely used for <a href="Encoding" class="mw-redirect" title="Encoding">encoding</a>, decoding, <a href="Video_coding" class="mw-redirect" title="Video coding">video coding</a>, <a href="Audio_coding" class="mw-redirect" title="Audio coding">audio coding</a>, <a href="Multiplexing" title="Multiplexing">multiplexing</a>, control signals, <a href="Signaling" class="mw-redirect" title="Signaling">signaling</a>, <a href="Analog-to-digital_conversion" class="mw-redirect" title="Analog-to-digital conversion">analog-to-digital conversion</a>, formatting <a href="Luminance" title="Luminance">luminance</a> and color differences, and color formats such as <a href="YUV444" class="mw-redirect" title="YUV444">YUV444</a> and <a href="YUV411" class="mw-redirect" title="YUV411">YUV411</a>. DCTs are also used for encoding operations such as <a href="Motion_estimation" title="Motion estimation">motion estimation</a>, <a href="Motion_compensation" title="Motion compensation">motion compensation</a>, <a href="Inter-frame" class="mw-redirect" title="Inter-frame">inter-frame</a> prediction, <a href="Quantization_(signal_processing)" title="Quantization (signal processing)">quantization</a>, perceptual weighting, <a href="Entropy_encoding" class="mw-redirect" title="Entropy encoding">entropy encoding</a>, variable encoding, and <a href="Motion_vector" class="mw-redirect" title="Motion vector">motion vectors</a>, and decoding operations such as the inverse operation between different color formats (<a href="YIQ" title="YIQ">YIQ</a>, <a href="YUV" class="mw-redirect" title="YUV">YUV</a> and <a href="RGB" class="mw-redirect" title="RGB">RGB</a>) for display purposes. DCTs are also commonly used for <a href="High-definition_television" title="High-definition television">high-definition television</a> (HDTV) encoder/decoder chips.<sup id="cite_ref-Stankovic_38-0" class="reference"><a href="#cite_note-Stankovic-38"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Tasks">Tasks</h2></div>
<p>Digital image processing allows the use of much more complex algorithms, and hence, can offer both more sophisticated performance at simple tasks, and the implementation of methods which would be impossible by analogue means.
</p><p>In particular, digital image processing is a concrete application of, and a practical technology based on:
</p>
<ul><li><a href="Statistical_classification" title="Statistical classification">Classification</a></li>
<li><a href="Feature_extraction" class="mw-redirect" title="Feature extraction">Feature extraction</a></li>
<li><a href="Multi-scale_signal_analysis" class="mw-redirect" title="Multi-scale signal analysis">Multi-scale signal analysis</a></li>
<li><a href="Pattern_recognition" title="Pattern recognition">Pattern recognition</a></li>
<li><a href="Graphical_projection" class="mw-redirect" title="Graphical projection">Projection</a></li></ul>
<p>Some techniques which are used in digital image processing include:
</p>
<ul><li><a href="Anisotropic_diffusion" title="Anisotropic diffusion">Anisotropic diffusion</a></li>
<li><a href="Hidden_Markov_model" title="Hidden Markov model">Hidden Markov models</a></li>
<li><a href="Image_editing" title="Image editing">Image editing</a></li>
<li><a href="Digital_photograph_restoration" title="Digital photograph restoration">Image restoration</a></li>
<li><a href="Independent_component_analysis" title="Independent component analysis">Independent component analysis</a></li>
<li><a href="Linear_filter" title="Linear filter">Linear filtering</a></li>
<li><a href="Artificial_neural_networks" class="mw-redirect" title="Artificial neural networks">Neural networks</a></li>
<li><a href="Partial_differential_equations" class="mw-redirect" title="Partial differential equations">Partial differential equations</a></li>
<li><a href="Pixelation" title="Pixelation">Pixelation</a></li>
<li><a href="Point_feature_matching" class="mw-redirect" title="Point feature matching">Point feature matching</a></li>
<li><a href="Principal_components_analysis" class="mw-redirect" title="Principal components analysis">Principal components analysis</a></li>
<li><a href="Self-organizing_map" title="Self-organizing map">Self-organizing maps</a></li>
<li><a href="Wavelet" title="Wavelet">Wavelets</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Digital_image_transformations">Digital image transformations</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Filtering">Filtering</h3></div>
<p>Digital filters are used to blur and sharpen digital images. Filtering can be performed by:
</p>
<ul><li><a href="Kernel_(image_processing)#Convolution" title="Kernel (image processing)">convolution</a> with specifically designed <a href="Kernel_(image_processing)" title="Kernel (image processing)">kernels</a> (filter array) in the spatial domain<sup id="cite_ref-:0_39-0" class="reference"><a href="#cite_note-:0-39"><span class="cite-bracket">[</span>39<span class="cite-bracket">]</span></a></sup></li>
<li>masking specific frequency regions in the frequency (Fourier) domain</li></ul>
<p>The following examples show both methods:<sup id="cite_ref-Gonzalez_2008_40-0" class="reference"><a href="#cite_note-Gonzalez_2008-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup>
</p>
<table class="wikitable">

<tbody><tr>
<th>Filter type
</th>
<th>Kernel or mask
</th>
<th>Example
</th></tr>
<tr>
<td><b>Original Image</b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}0&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;0\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}0&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;0\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./5bf6623ca763ba780b471a565eb1b06cd14b445c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:11.985ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}0&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;0\end{bmatrix}}}" loading="lazy"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
<tr>
<td><b><a href="Lowpass" class="mw-redirect" title="Lowpass">Spatial Lowpass</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\frac {1}{9}}\times {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mn>1</mn>
<mn>9</mn>
</mfrac>
</mrow>
<mo>×<!-- × --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\frac {1}{9}}\times {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./fd0334e2eba0c8ade0a603b8fcadb1ecad64042b.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:16.824ex; height:9.176ex;" alt="{\displaystyle {\frac {1}{9}}\times {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
<tr>
<td><b><a href="Edge_detection" title="Edge detection">Spatial Highpass</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}0&amp;-1&amp;0\\-1&amp;4&amp;-1\\0&amp;-1&amp;0\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mo>−<!-- − --></mo>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>−<!-- − --></mo>
<mn>1</mn>
</mtd>
<mtd>
<mn>4</mn>
</mtd>
<mtd>
<mo>−<!-- − --></mo>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mo>−<!-- − --></mo>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}0&amp;-1&amp;0\\-1&amp;4&amp;-1\\0&amp;-1&amp;0\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./9b629b1894659e926464af9782a0566c993bef9a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:17.409ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}0&amp;-1&amp;0\\-1&amp;4&amp;-1\\0&amp;-1&amp;0\end{bmatrix}}}" loading="lazy"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
<tr>
<td><b><a href="Fast_Fourier_transform" title="Fast Fourier transform">Fourier Representation</a></b>
</td>
<td>Pseudo-code:
<p>image = checkerboard
</p><p>F = Fourier Transform of image
</p><p>Show Image: log(1+Absolute Value(F))
</p>
</td>
<td align="center"><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
<tr>
<td><b>Fourier Lowpass</b>
</td>
<td align="center"><span class="mw-default-size" typeof="mw:File"></span>
</td>
<td align="center"><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
<tr>
<td><b>Fourier Highpass</b>
</td>
<td align="center"><span class="mw-default-size" typeof="mw:File"></span>
</td>
<td align="center"><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
</tbody></table>
<div class="mw-heading mw-heading4"><h4 id="Image_padding_in_Fourier_domain_filtering">Image padding in Fourier domain filtering</h4></div>
<p>Images are typically padded before being transformed to the Fourier space, the <a href="Highpass_filter" class="mw-redirect" title="Highpass filter">highpass filtered</a> images below illustrate the consequences of different padding techniques:
</p>
<table class="wikitable">

<tbody><tr>
<th>Zero padded
</th>
<th>Repeated edge padded
</th></tr>
<tr>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
</tbody></table>
<p>Notice that the highpass filter shows extra edges when zero padded compared to the repeated edge padding.
</p>
<div class="mw-heading mw-heading4"><h4 id="Filtering_code_examples">Filtering code examples</h4></div>
<p>MATLAB example for spatial domain highpass filtering.
</p>
<div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr" dir="ltr"><pre><span class="n">img</span><span class="p">=</span><span class="n">checkerboard</span><span class="p">(</span><span class="mi">20</span><span class="p">);</span><span class="w"> </span><span class="c">% generate checkerboard</span>
<span class="c">% ************************** SPATIAL DOMAIN ***************************</span>
<span class="n">klaplace</span><span class="p">=[</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="w"> </span><span class="mi">0</span><span class="p">];</span><span class="w"> </span><span class="c">% Laplacian filter kernel</span>
<span class="n">X</span><span class="p">=</span><span class="nb">conv2</span><span class="p">(</span><span class="n">img</span><span class="p">,</span><span class="n">klaplace</span><span class="p">);</span><span class="w"> </span><span class="c">% convolve test img with</span>
<span class="w"> </span><span class="c">% 3x3 Laplacian kernel</span>
<span class="nb">figure</span><span class="p">()</span>
<span class="nb">imshow</span><span class="p">(</span><span class="n">X</span><span class="p">,[])</span><span class="w"> </span><span class="c">% show Laplacian filtered</span>
<span class="nb">title</span><span class="p">(</span><span class="s">'Laplacian Edge Detection'</span><span class="p">)</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Affine_transformations">Affine transformations</h3></div>
<p><a href="Affine_transformations" class="mw-redirect" title="Affine transformations">Affine transformations</a> enable basic image transformations including scale, rotate, translate, mirror and shear as is shown in the following examples:<sup id="cite_ref-Gonzalez_2008_40-1" class="reference"><a href="#cite_note-Gonzalez_2008-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup>
</p>
<table class="wikitable">

<tbody><tr>
<th>Transformation Name
</th>
<th>Affine Matrix
</th>
<th>Example
</th></tr>
<tr>
<td><b><a href="Identity_operation" class="mw-redirect" title="Identity operation">Identity</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./917dc504a6780a695d578a7b216036af7e49c506.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:11.985ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}1&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
<tr>
<td><b><a href="Reflection_(mathematics)" title="Reflection (mathematics)">Reflection</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}-1&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mo>−<!-- − --></mo>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}-1&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./b6f3c4219a22cd7963c3bed901717c1b34edda32.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:13.793ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}-1&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
<tr>
<td><b><a href="Scale_(ratio)" title="Scale (ratio)">Scale</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}c_{x}=2&amp;0&amp;0\\0&amp;c_{y}=1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<msub>
<mi>c</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>x</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>2</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>c</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>y</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}c_{x}=2&amp;0&amp;0\\0&amp;c_{y}=1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./75c9c1d42880a29086ffc303cd6aecd0d83c3bb9.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.171ex; width:22.417ex; height:9.509ex;" alt="{\displaystyle {\begin{bmatrix}c_{x}=2&amp;0&amp;0\\0&amp;c_{y}=1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
<tr>
<td><b><a href="Rotate" class="mw-redirect" title="Rotate">Rotate</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}\cos(\theta )&amp;\sin(\theta )&amp;0\\-\sin(\theta )&amp;\cos(\theta )&amp;0\\0&amp;0&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mi>cos</mi>
<mo>⁡<!-- ⁡ --></mo>
<mo stretchy="false">(</mo>
<mi>θ<!-- θ --></mi>
<mo stretchy="false">)</mo>
</mtd>
<mtd>
<mi>sin</mi>
<mo>⁡<!-- ⁡ --></mo>
<mo stretchy="false">(</mo>
<mi>θ<!-- θ --></mi>
<mo stretchy="false">)</mo>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>−<!-- − --></mo>
<mi>sin</mi>
<mo>⁡<!-- ⁡ --></mo>
<mo stretchy="false">(</mo>
<mi>θ<!-- θ --></mi>
<mo stretchy="false">)</mo>
</mtd>
<mtd>
<mi>cos</mi>
<mo>⁡<!-- ⁡ --></mo>
<mo stretchy="false">(</mo>
<mi>θ<!-- θ --></mi>
<mo stretchy="false">)</mo>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}\cos(\theta )&amp;\sin(\theta )&amp;0\\-\sin(\theta )&amp;\cos(\theta )&amp;0\\0&amp;0&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./1e7686d473b2f40fbb3e867b4b3409bf63bcd823.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.171ex; width:23.621ex; height:9.509ex;" alt="{\displaystyle {\begin{bmatrix}\cos(\theta )&amp;\sin(\theta )&amp;0\\-\sin(\theta )&amp;\cos(\theta )&amp;0\\0&amp;0&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span> where <span class="texhtml"><i>θ</i> = <style data-mw-deduplicate="TemplateStyles:r1214402035">
/* start https://en.wikipedia.org/ */


.mw-parser-output .sfrac{white-space:nowrap}.mw-parser-output .sfrac.tion,.mw-parser-output .sfrac .tion{display:inline-block;vertical-align:-0.5em;font-size:85%;text-align:center}.mw-parser-output .sfrac .num{display:block;line-height:1em;margin:0.0em 0.1em;border-bottom:1px solid}.mw-parser-output .sfrac .den{display:block;line-height:1em;margin:0.1em 0.1em}.mw-parser-output .sr-only{border:0;clip:rect(0,0,0,0);clip-path:polygon(0px 0px,0px 0px,0px 0px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}


/* end https://en.wikipedia.org/ */
</style><span class="sfrac">⁠<span class="tion"><span class="num">π</span><span class="sr-only">/</span><span class="den">6</span></span>⁠</span> =30°</span>
</td></tr>
<tr>
<td><b><a href="Shear_matrix" class="mw-redirect" title="Shear matrix">Shear</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1&amp;c_{x}=0.5&amp;0\\c_{y}=0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<msub>
<mi>c</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>x</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>0.5</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>c</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>y</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1&amp;c_{x}=0.5&amp;0\\c_{y}=0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./0063f16565cecf78a3732068701f46390ad2f4a7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.171ex; width:24.226ex; height:9.509ex;" alt="{\displaystyle {\begin{bmatrix}1&amp;c_{x}=0.5&amp;0\\c_{y}=0&amp;1&amp;0\\0&amp;0&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr>
</tbody></table>
<p>To apply the affine matrix to an image, the image is converted to matrix in which each entry corresponds to the pixel intensity at that location. Then each pixel's location can be represented as a vector indicating the coordinates of that pixel in the image, <span class="texhtml">[<i>x</i>, <i>y</i>]</span>, where <span class="texhtml"><i>x</i></span> and <span class="texhtml"><i>y</i></span> are the row and column of a pixel in the image matrix. This allows the coordinate to be multiplied by an affine-transformation matrix, which gives the position that the pixel value will be copied to in the output image.
</p><p>However, to allow transformations that require translation transformations, 3-dimensional <a href="Homogeneous_coordinates" title="Homogeneous coordinates">homogeneous coordinates</a> are needed. The third dimension is usually set to a non-zero constant, usually <span class="texhtml">1</span>, so that the new coordinate is <span class="texhtml">[<i>x</i>, <i>y</i>, 1]</span>. This allows the coordinate vector to be multiplied by a 3×3 matrix, enabling translation shifts. Thus, the third dimension, i.e. the constant <span class="texhtml">1</span>, allows translation.
</p><p>Because matrix multiplication is <a href="Associative_property" title="Associative property">associative</a>, multiple affine transformations can be combined into a single affine transformation by multiplying the matrix of each individual transformation in the order that the transformations are done. This results in a single matrix that, when applied to a point vector, gives the same result as all the individual transformations performed on the vector <span class="texhtml">[<i>x</i>, <i>y</i>, 1]</span> in sequence. Thus a sequence of affine transformation matrices can be reduced to a single affine transformation matrix.
</p><p>For example, 2-dimensional coordinates only permit rotation about the origin <span class="texhtml">(0, 0)</span>. But 3-dimensional homogeneous coordinates can be used to first translate any point to <span class="texhtml">(0, 0)</span>, then perform the rotation, and lastly translate the origin <span class="texhtml">(0, 0)</span> back to the original point (the opposite of the first translation). These three affine transformations can be combined into a single matrix—thus allowing rotation around any point in the image.<sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Image_denoising_with_mathematical_morphology">Image denoising with mathematical morphology</h3></div>
<p><a href="Mathematical_morphology" title="Mathematical morphology">Mathematical morphology</a> (MM) is a nonlinear image processing framework that analyzes shapes within images by probing local pixel neighborhoods using a small, predefined function called a <a href="Structuring_element" title="Structuring element">structuring element</a>. In the context of <a href="Grayscale_image" class="mw-redirect" title="Grayscale image">grayscale images</a>, MM is especially useful for denoising through <a href="Dilation_(morphology)" title="Dilation (morphology)">dilation</a> and <a href="Erosion_(morphology)" title="Erosion (morphology)">erosion</a>—primitive operators that can be combined to build more complex filters.
</p><p>Suppose we have:
</p>
<ul><li>A discrete grayscale image: <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f={\begin{bmatrix}45&amp;50&amp;65\\40&amp;60&amp;55\\25&amp;15&amp;5\end{bmatrix}},\quad f:\Omega \rightarrow \mathbb {R} ,\quad \Omega =\{0,1,2\}^{2},}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>f</mi>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>45</mn>
</mtd>
<mtd>
<mn>50</mn>
</mtd>
<mtd>
<mn>65</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>40</mn>
</mtd>
<mtd>
<mn>60</mn>
</mtd>
<mtd>
<mn>55</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>25</mn>
</mtd>
<mtd>
<mn>15</mn>
</mtd>
<mtd>
<mn>5</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>f</mi>
<mo>:</mo>
<mi mathvariant="normal">Ω<!-- Ω --></mi>
<mo stretchy="false">→<!-- → --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="double-struck">R</mi>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi mathvariant="normal">Ω<!-- Ω --></mi>
<mo>=</mo>
<mo fence="false" stretchy="false">{</mo>
<mn>0</mn>
<mo>,</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<msup>
<mo fence="false" stretchy="false">}</mo>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mo>,</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle f={\begin{bmatrix}45&amp;50&amp;65\\40&amp;60&amp;55\\25&amp;15&amp;5\end{bmatrix}},\quad f:\Omega \rightarrow \mathbb {R} ,\quad \Omega =\{0,1,2\}^{2},}</annotation>
</semantics>
</math></span><img src="./a204a261a319d147c8dfc0c982c243606df9d52d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:51.106ex; height:9.176ex;" alt="{\displaystyle f={\begin{bmatrix}45&amp;50&amp;65\\40&amp;60&amp;55\\25&amp;15&amp;5\end{bmatrix}},\quad f:\Omega \rightarrow \mathbb {R} ,\quad \Omega =\{0,1,2\}^{2},}" loading="lazy"></span></li></ul>
<ul><li>A structuring element: <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle B={\begin{bmatrix}1&amp;2&amp;1\\2&amp;1&amp;1\\1&amp;0&amp;3\end{bmatrix}},\quad B:{\mathcal {S}}\rightarrow \mathbb {R} ,\quad {\mathcal {S}}=\{-1,0,1\}^{2}.}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>B</mi>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>2</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>2</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>3</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>B</mi>
<mo>:</mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi class="MJX-tex-caligraphic" mathvariant="script">S</mi>
</mrow>
</mrow>
<mo stretchy="false">→<!-- → --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="double-struck">R</mi>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi class="MJX-tex-caligraphic" mathvariant="script">S</mi>
</mrow>
</mrow>
<mo>=</mo>
<mo fence="false" stretchy="false">{</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>,</mo>
<mn>0</mn>
<mo>,</mo>
<mn>1</mn>
<msup>
<mo fence="false" stretchy="false">}</mo>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mo>.</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle B={\begin{bmatrix}1&amp;2&amp;1\\2&amp;1&amp;1\\1&amp;0&amp;3\end{bmatrix}},\quad B:{\mathcal {S}}\rightarrow \mathbb {R} ,\quad {\mathcal {S}}=\{-1,0,1\}^{2}.}</annotation>
</semantics>
</math></span><img src="./fda8004a9622f89d8dac474a9a57037b4284969b.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:50.026ex; height:9.176ex;" alt="{\displaystyle B={\begin{bmatrix}1&amp;2&amp;1\\2&amp;1&amp;1\\1&amp;0&amp;3\end{bmatrix}},\quad B:{\mathcal {S}}\rightarrow \mathbb {R} ,\quad {\mathcal {S}}=\{-1,0,1\}^{2}.}" loading="lazy"></span></li></ul>
<p>Here, <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\mathcal {S}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi class="MJX-tex-caligraphic" mathvariant="script">S</mi>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\mathcal {S}}}</annotation>
</semantics>
</math></span><img src="./2302a18e269dbecc43c57c0c2aced3bfae15278d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.492ex; height:2.176ex;" alt="{\displaystyle {\mathcal {S}}}" loading="lazy"></span> defines the neighborhood of relative coordinates <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (m,n)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo stretchy="false">(</mo>
<mi>m</mi>
<mo>,</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle (m,n)}</annotation>
</semantics>
</math></span><img src="./274d4857135a7d28a94ba9ee8135779615084d43.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:6.278ex; height:2.843ex;" alt="{\displaystyle (m,n)}" loading="lazy"></span> over which local operations are computed. The values of <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle B(m,n)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>B</mi>
<mo stretchy="false">(</mo>
<mi>m</mi>
<mo>,</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle B(m,n)}</annotation>
</semantics>
</math></span><img src="./7f1a73c7fa714079c1d7d34ac057cc268407d334.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:8.042ex; height:2.843ex;" alt="{\displaystyle B(m,n)}" loading="lazy"></span> bias the image during dilation and erosion.
</p>
<dl><dt>Dilation</dt>
<dd>Grayscale dilation is defined as:</dd></dl>
<p><span class="mwe-math-element mwe-math-element-block"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (f\oplus B)(i,j)=\max _{(m,n)\in {\mathcal {S}}}{\Bigl \{}f(i+m,j+n)+B(m,n){\Bigr \}}.}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo stretchy="false">(</mo>
<mi>f</mi>
<mo>⊕<!-- ⊕ --></mo>
<mi>B</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">(</mo>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<munder>
<mo movablelimits="true" form="prefix">max</mo>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">(</mo>
<mi>m</mi>
<mo>,</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mo>∈<!-- ∈ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi class="MJX-tex-caligraphic" mathvariant="script">S</mi>
</mrow>
</mrow>
</mrow>
</munder>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-OPEN">
<mo maxsize="1.623em" minsize="1.623em">{</mo>
</mrow>
</mrow>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mi>i</mi>
<mo>+</mo>
<mi>m</mi>
<mo>,</mo>
<mi>j</mi>
<mo>+</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mi>m</mi>
<mo>,</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-CLOSE">
<mo maxsize="1.623em" minsize="1.623em">}</mo>
</mrow>
</mrow>
<mo>.</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle (f\oplus B)(i,j)=\max _{(m,n)\in {\mathcal {S}}}{\Bigl \{}f(i+m,j+n)+B(m,n){\Bigr \}}.}</annotation>
</semantics>
</math></span></span>
</p>
<dl><dd>For example, the dilation at position <span class="texhtml">(1, 1)</span> is calculated as:</dd></dl>
<p><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}(f\oplus B)(1,1)=\max \!{\Bigl (}&amp;f(0,0)+B(-1,-1),&amp;\;45+1;&amp;\\&amp;f(1,0)+B(0,-1),&amp;\;50+2;&amp;\\&amp;f(2,0)+B(1,-1),&amp;\;65+1;&amp;\\&amp;f(0,1)+B(-1,0),&amp;\;40+2;&amp;\\&amp;f(1,1)+B(0,0),&amp;\;60+1;&amp;\\&amp;f(2,1)+B(1,0),&amp;\;55+1;&amp;\\&amp;f(0,2)+B(-1,1),&amp;\;25+1;&amp;\\&amp;f(1,2)+B(0,1),&amp;\;15+0;&amp;\\&amp;f(2,2)+B(1,1)&amp;\;5+3{\Bigr )}=66.\end{aligned}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true">
<mtr>
<mtd>
<mo stretchy="false">(</mo>
<mi>f</mi>
<mo>⊕<!-- ⊕ --></mo>
<mi>B</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mo movablelimits="true" form="prefix">max</mo>
<mspace width="negativethinmathspace"></mspace>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-OPEN">
<mo maxsize="1.623em" minsize="1.623em">(</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>,</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>45</mn>
<mo>+</mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>50</mn>
<mo>+</mo>
<mn>2</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>65</mn>
<mo>+</mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>40</mn>
<mo>+</mo>
<mn>2</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>60</mn>
<mo>+</mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>55</mn>
<mo>+</mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>25</mn>
<mo>+</mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>15</mn>
<mo>+</mo>
<mn>0</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo>,</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>5</mn>
<mo>+</mo>
<mn>3</mn>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-CLOSE">
<mo maxsize="1.623em" minsize="1.623em">)</mo>
</mrow>
</mrow>
<mo>=</mo>
<mn>66.</mn>
</mtd>
</mtr>
</mtable>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}(f\oplus B)(1,1)=\max \!{\Bigl (}&amp;f(0,0)+B(-1,-1),&amp;\;45+1;&amp;\\&amp;f(1,0)+B(0,-1),&amp;\;50+2;&amp;\\&amp;f(2,0)+B(1,-1),&amp;\;65+1;&amp;\\&amp;f(0,1)+B(-1,0),&amp;\;40+2;&amp;\\&amp;f(1,1)+B(0,0),&amp;\;60+1;&amp;\\&amp;f(2,1)+B(1,0),&amp;\;55+1;&amp;\\&amp;f(0,2)+B(-1,1),&amp;\;25+1;&amp;\\&amp;f(1,2)+B(0,1),&amp;\;15+0;&amp;\\&amp;f(2,2)+B(1,1)&amp;\;5+3{\Bigr )}=66.\end{aligned}}}</annotation>
</semantics>
</math></span><img src="./0631728a2ffadc5df7daa75d19f73b120edc8ad6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -15.171ex; width:60.82ex; height:31.509ex;" alt="{\displaystyle {\begin{aligned}(f\oplus B)(1,1)=\max \!{\Bigl (}&amp;f(0,0)+B(-1,-1),&amp;\;45+1;&amp;\\&amp;f(1,0)+B(0,-1),&amp;\;50+2;&amp;\\&amp;f(2,0)+B(1,-1),&amp;\;65+1;&amp;\\&amp;f(0,1)+B(-1,0),&amp;\;40+2;&amp;\\&amp;f(1,1)+B(0,0),&amp;\;60+1;&amp;\\&amp;f(2,1)+B(1,0),&amp;\;55+1;&amp;\\&amp;f(0,2)+B(-1,1),&amp;\;25+1;&amp;\\&amp;f(1,2)+B(0,1),&amp;\;15+0;&amp;\\&amp;f(2,2)+B(1,1)&amp;\;5+3{\Bigr )}=66.\end{aligned}}}" loading="lazy"></span>
</p>
<dl><dt>Erosion</dt>
<dd>Grayscale erosion is defined as:</dd></dl>
<p><span class="mwe-math-element mwe-math-element-block"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (f\ominus B)(i,j)=\min _{(m,n)\in {\mathcal {S}}}{\Bigl \{}f(i+m,j+n)-B(m,n){\Bigr \}}.}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo stretchy="false">(</mo>
<mi>f</mi>
<mo>⊖<!-- ⊖ --></mo>
<mi>B</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">(</mo>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<munder>
<mo movablelimits="true" form="prefix">min</mo>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">(</mo>
<mi>m</mi>
<mo>,</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mo>∈<!-- ∈ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi class="MJX-tex-caligraphic" mathvariant="script">S</mi>
</mrow>
</mrow>
</mrow>
</munder>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-OPEN">
<mo maxsize="1.623em" minsize="1.623em">{</mo>
</mrow>
</mrow>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mi>i</mi>
<mo>+</mo>
<mi>m</mi>
<mo>,</mo>
<mi>j</mi>
<mo>+</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mi>m</mi>
<mo>,</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-CLOSE">
<mo maxsize="1.623em" minsize="1.623em">}</mo>
</mrow>
</mrow>
<mo>.</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle (f\ominus B)(i,j)=\min _{(m,n)\in {\mathcal {S}}}{\Bigl \{}f(i+m,j+n)-B(m,n){\Bigr \}}.}</annotation>
</semantics>
</math></span></span>
</p>
<dl><dd>For example, the erosion at position <span class="texhtml">(1, 1)</span> is calculated as:</dd></dl>
<p><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}(f\ominus B)(1,1)=\min \!{\Bigl (}&amp;f(0,0)-B(-1,-1),&amp;\;45-1;&amp;\\&amp;f(1,0)-B(0,-1),&amp;\;50-2;&amp;\\&amp;f(2,0)-B(1,-1),&amp;\;65-1;&amp;\\&amp;f(0,1)-B(-1,0),&amp;\;40-2;&amp;\\&amp;f(1,1)-B(0,0),&amp;\;60-1;&amp;\\&amp;f(2,1)-B(1,0),&amp;\;55-1;&amp;\\&amp;f(0,2)-B(-1,1),&amp;\;25-1;&amp;\\&amp;f(1,2)-B(0,1),&amp;\;15-0;&amp;\\&amp;f(2,2)-B(1,1)&amp;\;5-3{\Bigr )}=2.\end{aligned}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true">
<mtr>
<mtd>
<mo stretchy="false">(</mo>
<mi>f</mi>
<mo>⊖<!-- ⊖ --></mo>
<mi>B</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mo movablelimits="true" form="prefix">min</mo>
<mspace width="negativethinmathspace"></mspace>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-OPEN">
<mo maxsize="1.623em" minsize="1.623em">(</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>,</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>45</mn>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>50</mn>
<mo>−<!-- − --></mo>
<mn>2</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>65</mn>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>40</mn>
<mo>−<!-- − --></mo>
<mn>2</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>60</mn>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>55</mn>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>25</mn>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>15</mn>
<mo>−<!-- − --></mo>
<mn>0</mn>
<mo>;</mo>
</mtd>
<mtd></mtd>
</mtr>
<mtr>
<mtd></mtd>
<mtd>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo>,</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>B</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>,</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mtd>
<mtd>
<mspace width="thickmathspace"></mspace>
<mn>5</mn>
<mo>−<!-- − --></mo>
<mn>3</mn>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-CLOSE">
<mo maxsize="1.623em" minsize="1.623em">)</mo>
</mrow>
</mrow>
<mo>=</mo>
<mn>2.</mn>
</mtd>
</mtr>
</mtable>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}(f\ominus B)(1,1)=\min \!{\Bigl (}&amp;f(0,0)-B(-1,-1),&amp;\;45-1;&amp;\\&amp;f(1,0)-B(0,-1),&amp;\;50-2;&amp;\\&amp;f(2,0)-B(1,-1),&amp;\;65-1;&amp;\\&amp;f(0,1)-B(-1,0),&amp;\;40-2;&amp;\\&amp;f(1,1)-B(0,0),&amp;\;60-1;&amp;\\&amp;f(2,1)-B(1,0),&amp;\;55-1;&amp;\\&amp;f(0,2)-B(-1,1),&amp;\;25-1;&amp;\\&amp;f(1,2)-B(0,1),&amp;\;15-0;&amp;\\&amp;f(2,2)-B(1,1)&amp;\;5-3{\Bigr )}=2.\end{aligned}}}</annotation>
</semantics>
</math></span><img src="./f01a0f563d9856869b98e80f7322f38d9503c69a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -15.171ex; width:59.207ex; height:31.509ex;" alt="{\displaystyle {\begin{aligned}(f\ominus B)(1,1)=\min \!{\Bigl (}&amp;f(0,0)-B(-1,-1),&amp;\;45-1;&amp;\\&amp;f(1,0)-B(0,-1),&amp;\;50-2;&amp;\\&amp;f(2,0)-B(1,-1),&amp;\;65-1;&amp;\\&amp;f(0,1)-B(-1,0),&amp;\;40-2;&amp;\\&amp;f(1,1)-B(0,0),&amp;\;60-1;&amp;\\&amp;f(2,1)-B(1,0),&amp;\;55-1;&amp;\\&amp;f(0,2)-B(-1,1),&amp;\;25-1;&amp;\\&amp;f(1,2)-B(0,1),&amp;\;15-0;&amp;\\&amp;f(2,2)-B(1,1)&amp;\;5-3{\Bigr )}=2.\end{aligned}}}" loading="lazy"></span>
</p>
<div class="mw-heading mw-heading4"><h4 id="Results">Results</h4></div>
<p>After applying dilation to <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>f</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle f}</annotation>
</semantics>
</math></span><img src="./132e57acb643253e7810ee9702d9581f159a1c61.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.279ex; height:2.509ex;" alt="{\displaystyle f}" loading="lazy"></span>:
<span class="mwe-math-element mwe-math-element-block"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}45&amp;50&amp;65\\40&amp;66&amp;55\\25&amp;15&amp;5\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>45</mn>
</mtd>
<mtd>
<mn>50</mn>
</mtd>
<mtd>
<mn>65</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>40</mn>
</mtd>
<mtd>
<mn>66</mn>
</mtd>
<mtd>
<mn>55</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>25</mn>
</mtd>
<mtd>
<mn>15</mn>
</mtd>
<mtd>
<mn>5</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}45&amp;50&amp;65\\40&amp;66&amp;55\\25&amp;15&amp;5\end{bmatrix}}}</annotation>
</semantics>
</math></span></span>
</p><p>After applying erosion to <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>f</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle f}</annotation>
</semantics>
</math></span><img src="./132e57acb643253e7810ee9702d9581f159a1c61.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.279ex; height:2.509ex;" alt="{\displaystyle f}" loading="lazy"></span>:
<span class="mwe-math-element mwe-math-element-block"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}45&amp;50&amp;65\\40&amp;2&amp;55\\25&amp;15&amp;5\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>45</mn>
</mtd>
<mtd>
<mn>50</mn>
</mtd>
<mtd>
<mn>65</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>40</mn>
</mtd>
<mtd>
<mn>2</mn>
</mtd>
<mtd>
<mn>55</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>25</mn>
</mtd>
<mtd>
<mn>15</mn>
</mtd>
<mtd>
<mn>5</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}45&amp;50&amp;65\\40&amp;2&amp;55\\25&amp;15&amp;5\end{bmatrix}}}</annotation>
</semantics>
</math></span></span>
</p>
<div class="mw-heading mw-heading4"><h4 id="Opening_and_Closing">Opening and Closing</h4></div>
<p>MM operations, such as <a href="Opening_(morphology)" title="Opening (morphology)">opening</a> and <a href="Closing_(morphology)" title="Closing (morphology)">closing</a>, are composite processes that utilize both dilation and erosion to modify the structure of an image. These operations are particularly useful for tasks such as noise removal, shape smoothing, and object separation.
</p>
<ul><li><i>Opening</i>: This operation is performed by applying erosion to an image first, followed by dilation. The purpose of opening is to remove small objects or noise from the foreground while preserving the overall structure of larger objects. It is especially effective in situations where noise appears as isolated bright pixels or small, disconnected features.</li></ul>
<p>For example, applying opening to an image <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>f</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle f}</annotation>
</semantics>
</math></span><img src="./132e57acb643253e7810ee9702d9581f159a1c61.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.279ex; height:2.509ex;" alt="{\displaystyle f}" loading="lazy"></span> with a structuring element <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle B}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>B</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle B}</annotation>
</semantics>
</math></span><img src="./47136aad860d145f75f3eed3022df827cee94d7a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle B}" loading="lazy"></span> would first reduce small details (through erosion) and then restore the main shapes (through dilation). This ensures that unwanted noise is removed without significantly altering the size or shape of larger objects.
</p>
<ul><li><i>Closing</i>: This operation is performed by applying dilation first, followed by erosion. Closing is typically used to fill small holes or gaps within objects and to connect broken parts of the foreground. It works by initially expanding the boundaries of objects (through dilation) and then refining the boundaries (through erosion).</li></ul>
<p>For instance, applying closing to the same image <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>f</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle f}</annotation>
</semantics>
</math></span><img src="./132e57acb643253e7810ee9702d9581f159a1c61.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.279ex; height:2.509ex;" alt="{\displaystyle f}" loading="lazy"></span> would fill in small gaps within objects, such as connecting breaks in thin lines or closing small holes, while ensuring that the surrounding areas are not significantly affected.
</p><p>Both opening and closing can be visualized as ways of refining the structure of an image: opening simplifies and removes small, unnecessary details, while closing consolidates and connects objects to form more cohesive structures.
</p>
<table class="wikitable">

<tbody><tr>
<th>Structuring element
</th>
<th>Mask
</th>
<th>Code
</th>
<th>Example
</th></tr>
<tr>
<td><b>Original Image</b>
</td>
<td>None
</td>
<td>Use Matlab to read Original image
<div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr" dir="ltr"><pre><span class="n">original</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">imread</span><span class="p">(</span><span class="s">'scene.jpg'</span><span class="p">);</span>
<span class="nb">image</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">rgb2gray</span><span class="p">(</span><span class="n">original</span><span class="p">);</span>
<span class="p">[</span><span class="n">r</span><span class="p">,</span><span class="w"> </span><span class="n">c</span><span class="p">,</span><span class="w"> </span><span class="n">channel</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">size</span><span class="p">(</span><span class="nb">image</span><span class="p">);</span>
<span class="n">se</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">logical</span><span class="p">([</span><span class="mi">1</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">;</span><span class="w"> </span><span class="n">1</span><span class="w"> </span><span class="s">1</span><span class="w"> </span><span class="s">1</span><span class="w"> </span><span class="p">;</span><span class="w"> </span><span class="n">1</span><span class="w"> </span><span class="s">1</span><span class="w"> </span><span class="s">1])</span><span class="p">;</span>
<span class="p">[</span><span class="n">p</span><span class="p">,</span><span class="w"> </span><span class="n">q</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">size</span><span class="p">(</span><span class="n">se</span><span class="p">);</span>
<span class="n">halfH</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">floor</span><span class="p">(</span><span class="n">p</span><span class="o">/</span><span class="mi">2</span><span class="p">);</span>
<span class="n">halfW</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">floor</span><span class="p">(</span><span class="n">q</span><span class="o">/</span><span class="mi">2</span><span class="p">);</span>
<span class="nb">time</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="c">% denoising 3 times with all method</span>
</pre></div>
</td>
<td>
</td></tr>

<tr>
<td><b><a href="Dilation_(morphology)" title="Dilation (morphology)">Dilation</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./5350c22386c6f1c2c32769f4fc14ca3a0121a3ea.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:11.985ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td>Use Matlab to dilation
<div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr" dir="ltr"><pre><span class="nb">imwrite</span><span class="p">(</span><span class="nb">image</span><span class="p">,</span><span class="w"> </span><span class="s">"scene_dil.jpg"</span><span class="p">)</span>
<span class="n">extractmax</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">zeros</span><span class="p">(</span><span class="nb">size</span><span class="p">(</span><span class="nb">image</span><span class="p">),</span><span class="w"> </span><span class="nb">class</span><span class="p">(</span><span class="nb">image</span><span class="p">));</span>
<span class="k">for</span><span class="w"> </span><span class="nb">i</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nb">time</span>
<span class="w"> </span><span class="n">dil_image</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">imread</span><span class="p">(</span><span class="s">'scene_dil.jpg'</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">halfW</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">):</span><span class="w"> </span><span class="p">(</span><span class="n">c</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfW</span><span class="p">)</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">halfH</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">r</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfH</span><span class="p">)</span>
<span class="w"> </span><span class="n">dpointD</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfH</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointU</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">halfH</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointL</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfW</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointR</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">halfW</span><span class="p">;</span>
<span class="w"> </span><span class="n">dneighbor</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">dil_image</span><span class="p">(</span><span class="n">dpointD</span><span class="p">:</span><span class="n">dpointU</span><span class="p">,</span><span class="w"> </span><span class="n">dpointL</span><span class="p">:</span><span class="n">dpointR</span><span class="p">);</span>
<span class="w"> </span><span class="nb">filter</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">dneighbor</span><span class="p">(</span><span class="n">se</span><span class="p">);</span>
<span class="w"> </span><span class="n">extractmax</span><span class="p">(</span><span class="n">row</span><span class="p">,</span><span class="w"> </span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">max</span><span class="p">(</span><span class="nb">filter</span><span class="p">);</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="nb">imwrite</span><span class="p">(</span><span class="n">extractmax</span><span class="p">,</span><span class="w"> </span><span class="s">"scene_dil.jpg"</span><span class="p">);</span>
<span class="k">end</span>
</pre></div>
</td>
<td>
</td></tr>
<tr>
<td><b><a href="Erosion_(morphology)" title="Erosion (morphology)">Erosion</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./5350c22386c6f1c2c32769f4fc14ca3a0121a3ea.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:11.985ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td>Use Matlab to erosion
<div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr" dir="ltr"><pre><span class="nb">imwrite</span><span class="p">(</span><span class="nb">image</span><span class="p">,</span><span class="w"> </span><span class="s">'scene_ero.jpg'</span><span class="p">);</span>
<span class="n">extractmin</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">zeros</span><span class="p">(</span><span class="nb">size</span><span class="p">(</span><span class="nb">image</span><span class="p">),</span><span class="w"> </span><span class="nb">class</span><span class="p">(</span><span class="nb">image</span><span class="p">));</span>
<span class="k">for</span><span class="w"> </span><span class="nb">i</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="nb">time</span>
<span class="w"> </span><span class="n">ero_image</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">imread</span><span class="p">(</span><span class="s">'scene_ero.jpg'</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">halfW</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">):</span><span class="w"> </span><span class="p">(</span><span class="n">c</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfW</span><span class="p">)</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">halfH</span><span class="w"> </span><span class="o">+</span><span class="mi">1</span><span class="p">):</span><span class="w"> </span><span class="p">(</span><span class="n">r</span><span class="w"> </span><span class="o">-</span><span class="n">halfH</span><span class="p">)</span>
<span class="w"> </span><span class="n">pointDown</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">row</span><span class="o">-</span><span class="n">halfH</span><span class="p">;</span>
<span class="w"> </span><span class="n">pointUp</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">row</span><span class="o">+</span><span class="n">halfH</span><span class="p">;</span>
<span class="w"> </span><span class="n">pointLeft</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">col</span><span class="o">-</span><span class="n">halfW</span><span class="p">;</span>
<span class="w"> </span><span class="n">pointRight</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">col</span><span class="o">+</span><span class="n">halfW</span><span class="p">;</span>
<span class="w"> </span><span class="n">neighbor</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ero_image</span><span class="p">(</span><span class="n">pointDown</span><span class="p">:</span><span class="n">pointUp</span><span class="p">,</span><span class="n">pointLeft</span><span class="p">:</span><span class="n">pointRight</span><span class="p">);</span>
<span class="w"> </span><span class="nb">filter</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">neighbor</span><span class="p">(</span><span class="n">se</span><span class="p">);</span>
<span class="w"> </span><span class="n">extractmin</span><span class="p">(</span><span class="n">row</span><span class="p">,</span><span class="w"> </span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">min</span><span class="p">(</span><span class="nb">filter</span><span class="p">);</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="nb">imwrite</span><span class="p">(</span><span class="n">extractmin</span><span class="p">,</span><span class="w"> </span><span class="s">"scene_ero.jpg"</span><span class="p">);</span>
<span class="k">end</span>
</pre></div>
</td>
<td>
</td></tr>

<tr>
<td><b><a href="Opening_(morphology)" title="Opening (morphology)">Opening</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./5350c22386c6f1c2c32769f4fc14ca3a0121a3ea.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:11.985ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td>Use Matlab to Opening
<div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr" dir="ltr"><pre><span class="nb">imwrite</span><span class="p">(</span><span class="n">extractmin</span><span class="p">,</span><span class="w"> </span><span class="s">"scene_opening.jpg"</span><span class="p">)</span>
<span class="n">extractopen</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">zeros</span><span class="p">(</span><span class="nb">size</span><span class="p">(</span><span class="nb">image</span><span class="p">),</span><span class="w"> </span><span class="nb">class</span><span class="p">(</span><span class="nb">image</span><span class="p">));</span>
<span class="k">for</span><span class="w"> </span><span class="nb">i</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nb">time</span>
<span class="w"> </span><span class="n">dil_image</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">imread</span><span class="p">(</span><span class="s">'scene_opening.jpg'</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">halfW</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">):</span><span class="w"> </span><span class="p">(</span><span class="n">c</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfW</span><span class="p">)</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">halfH</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">r</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfH</span><span class="p">)</span>
<span class="w"> </span><span class="n">dpointD</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfH</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointU</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">halfH</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointL</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfW</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointR</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">halfW</span><span class="p">;</span>
<span class="w"> </span><span class="n">dneighbor</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">dil_image</span><span class="p">(</span><span class="n">dpointD</span><span class="p">:</span><span class="n">dpointU</span><span class="p">,</span><span class="w"> </span><span class="n">dpointL</span><span class="p">:</span><span class="n">dpointR</span><span class="p">);</span>
<span class="w"> </span><span class="nb">filter</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">dneighbor</span><span class="p">(</span><span class="n">se</span><span class="p">);</span>
<span class="w"> </span><span class="n">extractopen</span><span class="p">(</span><span class="n">row</span><span class="p">,</span><span class="w"> </span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">max</span><span class="p">(</span><span class="nb">filter</span><span class="p">);</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="nb">imwrite</span><span class="p">(</span><span class="n">extractopen</span><span class="p">,</span><span class="w"> </span><span class="s">"scene_opening.jpg"</span><span class="p">);</span>
<span class="k">end</span>
</pre></div>
</td>
<td>
</td></tr>
<tr>
<td><b><a href="Closing_(morphology)" title="Closing (morphology)">Closing</a></b>
</td>
<td align="center"><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./5350c22386c6f1c2c32769f4fc14ca3a0121a3ea.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:11.985ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1\end{bmatrix}}}" loading="lazy"></span>
</td>
<td>Use Matlab to Closing
<div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr" dir="ltr"><pre><span class="nb">imwrite</span><span class="p">(</span><span class="n">extractmax</span><span class="p">,</span><span class="w"> </span><span class="s">"scene_closing.jpg"</span><span class="p">)</span>
<span class="n">extractclose</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">zeros</span><span class="p">(</span><span class="nb">size</span><span class="p">(</span><span class="nb">image</span><span class="p">),</span><span class="w"> </span><span class="nb">class</span><span class="p">(</span><span class="nb">image</span><span class="p">));</span>
<span class="k">for</span><span class="w"> </span><span class="nb">i</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nb">time</span>
<span class="w"> </span><span class="n">ero_image</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">imread</span><span class="p">(</span><span class="s">'scene_closing.jpg'</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">halfW</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">):</span><span class="w"> </span><span class="p">(</span><span class="n">c</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfW</span><span class="p">)</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">halfH</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">r</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfH</span><span class="p">)</span>
<span class="w"> </span><span class="n">dpointD</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfH</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointU</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">halfH</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointL</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">halfW</span><span class="p">;</span>
<span class="w"> </span><span class="n">dpointR</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">halfW</span><span class="p">;</span>
<span class="w"> </span><span class="n">dneighbor</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ero_image</span><span class="p">(</span><span class="n">dpointD</span><span class="p">:</span><span class="n">dpointU</span><span class="p">,</span><span class="w"> </span><span class="n">dpointL</span><span class="p">:</span><span class="n">dpointR</span><span class="p">);</span>
<span class="w"> </span><span class="nb">filter</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">dneighbor</span><span class="p">(</span><span class="n">se</span><span class="p">);</span>
<span class="w"> </span><span class="n">extractclose</span><span class="p">(</span><span class="n">row</span><span class="p">,</span><span class="w"> </span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">min</span><span class="p">(</span><span class="nb">filter</span><span class="p">);</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="nb">imwrite</span><span class="p">(</span><span class="n">extractclose</span><span class="p">,</span><span class="w"> </span><span class="s">"scene_closing.jpg"</span><span class="p">);</span>
<span class="k">end</span>
</pre></div>
</td>
<td>
</td></tr>
</tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Applications">Applications</h2></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Digital_imaging" title="Digital imaging">Digital imaging</a> and <a href="Applications_of_computer_vision" class="mw-redirect" title="Applications of computer vision">Applications of computer vision</a></div>
<div class="mw-heading mw-heading3"><h3 id="Digital_camera_images">Digital camera images</h3></div>
<p>Digital cameras generally include specialized digital image processing hardware – either dedicated chips or added circuitry on other chips – to convert the raw data from their <a href="Image_sensor" title="Image sensor">image sensor</a> into a <a href="Color_correction" title="Color correction">color-corrected</a> image in a standard <a href="Image_file_formats" class="mw-redirect" title="Image file formats">image file format</a>. Additional post processing techniques increase edge sharpness or color saturation to create more naturally looking images.
</p>
<div class="mw-heading mw-heading3"><h3 id="Film">Film</h3></div>
<p><i><a href="Westworld_(film)" title="Westworld (film)">Westworld</a></i> (1973) was the first feature film to use the digital image processing to <a href="Pixellate" class="mw-redirect" title="Pixellate">pixellate</a> photography to simulate an android's point of view.<sup id="cite_ref-42" class="reference"><a href="#cite_note-42"><span class="cite-bracket">[</span>42<span class="cite-bracket">]</span></a></sup> Image processing is also vastly used to produce the <a href="Chroma_key" title="Chroma key">chroma key</a> effect that replaces the background of actors with natural or artistic scenery.
</p>
<div class="mw-heading mw-heading3"><h3 id="Face_detection">Face detection</h3></div>

<p><a href="Face_detection" title="Face detection">Face detection</a> can be implemented with <a href="Mathematical_morphology" title="Mathematical morphology">mathematical morphology</a>, the <a href="Discrete_cosine_transform" title="Discrete cosine transform">discrete cosine transform</a> (DCT), and horizontal <a href="Projection_(mathematics)" title="Projection (mathematics)">projection</a>.
</p><p><b>General method with feature-based method</b>
</p><p>The feature-based method of face detection is using skin tone, edge detection, face shape, and feature of a face (like eyes, mouth, etc.) to achieve face detection. The skin tone, face shape, and all the unique elements that only the human face have can be described as features.
</p><p><b>Process explanation</b>
</p>
<ol><li>Given a batch of face images, first, extract the skin tone range by sampling face images. The skin tone range is just a skin filter.
<ol><li><a href="Structural_similarity" class="mw-redirect" title="Structural similarity">Structural similarity</a> index measure (SSIM) can be applied to compare images in terms of extracting the skin tone.</li>
<li>Normally, HSV or RGB color spaces are suitable for the skin filter. E.g. HSV mode, the skin tone range is [0,48,50] ~ [20,255,255]</li></ol></li>
<li>After filtering images with skin tone, to get the face edge, morphology and DCT are used to remove noise and fill up missing skin areas.
<ol><li>Opening method or closing method can be used to achieve filling up missing skin.</li>
<li>DCT is to avoid the object with skin-like tone. Since human faces always have higher texture.</li>
<li>Sobel operator or other operators can be applied to detect face edge.</li></ol></li>
<li>To position human features like eyes, using the projection and find the peak of the histogram of projection help to get the detail feature like mouth, hair, and lip.
<ol><li>Projection is just projecting the image to see the high frequency which is usually the feature position.</li></ol></li></ol>
<div class="mw-heading mw-heading3"><h3 id="Improvement_of_image_quality_method">Improvement of image quality method</h3></div>
<p>Image quality can be influenced by camera vibration, over-exposure, gray level distribution too centralized, and noise, etc. For example, noise problem can be solved by <a href="Smoothing" title="Smoothing">smoothing</a> method while gray level distribution problem can be improved by <a href="Histogram_equalization" title="Histogram equalization">histogram equalization</a>.
</p><p><b><a href="Smoothing" title="Smoothing">Smoothing</a> method</b>
</p><p>In drawing, if there is some dissatisfied color, taking some color around dissatisfied color and averaging them. This is an easy way to think of Smoothing method.
</p><p>Smoothing method can be implemented with mask and <a href="Convolution" title="Convolution">convolution</a>. Take the small image and mask for instance as below.
</p><p>image is
<span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}2&amp;5&amp;6&amp;5\\3&amp;1&amp;4&amp;6\\1&amp;28&amp;30&amp;2\\7&amp;3&amp;2&amp;2\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>2</mn>
</mtd>
<mtd>
<mn>5</mn>
</mtd>
<mtd>
<mn>6</mn>
</mtd>
<mtd>
<mn>5</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>3</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>4</mn>
</mtd>
<mtd>
<mn>6</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>28</mn>
</mtd>
<mtd>
<mn>30</mn>
</mtd>
<mtd>
<mn>2</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>7</mn>
</mtd>
<mtd>
<mn>3</mn>
</mtd>
<mtd>
<mn>2</mn>
</mtd>
<mtd>
<mn>2</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}2&amp;5&amp;6&amp;5\\3&amp;1&amp;4&amp;6\\1&amp;28&amp;30&amp;2\\7&amp;3&amp;2&amp;2\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./ba73023ac222584748d50094fd2b5c8ff4fb3fc4.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -5.671ex; width:17.795ex; height:12.509ex;" alt="{\displaystyle {\begin{bmatrix}2&amp;5&amp;6&amp;5\\3&amp;1&amp;4&amp;6\\1&amp;28&amp;30&amp;2\\7&amp;3&amp;2&amp;2\end{bmatrix}}}" loading="lazy"></span>
</p><p>mask is <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./9a61c215b24aa9c824f9615efbedb4edf03ab15c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.338ex; width:18.959ex; height:9.843ex;" alt="{\displaystyle {\begin{bmatrix}1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\end{bmatrix}}}" loading="lazy"></span>
</p><p>After convolution and smoothing, image is
<span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}2&amp;5&amp;6&amp;5\\3&amp;9&amp;10&amp;6\\1&amp;9&amp;9&amp;2\\7&amp;3&amp;2&amp;2\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>2</mn>
</mtd>
<mtd>
<mn>5</mn>
</mtd>
<mtd>
<mn>6</mn>
</mtd>
<mtd>
<mn>5</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>3</mn>
</mtd>
<mtd>
<mn>9</mn>
</mtd>
<mtd>
<mn>10</mn>
</mtd>
<mtd>
<mn>6</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>9</mn>
</mtd>
<mtd>
<mn>9</mn>
</mtd>
<mtd>
<mn>2</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>7</mn>
</mtd>
<mtd>
<mn>3</mn>
</mtd>
<mtd>
<mn>2</mn>
</mtd>
<mtd>
<mn>2</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}2&amp;5&amp;6&amp;5\\3&amp;9&amp;10&amp;6\\1&amp;9&amp;9&amp;2\\7&amp;3&amp;2&amp;2\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./855545cfa40bd44d635cbd904ae86c853209a8b7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -5.671ex; width:16.632ex; height:12.509ex;" alt="{\displaystyle {\begin{bmatrix}2&amp;5&amp;6&amp;5\\3&amp;9&amp;10&amp;6\\1&amp;9&amp;9&amp;2\\7&amp;3&amp;2&amp;2\end{bmatrix}}}" loading="lazy"></span>
</p><p>Observing image[1, 1], image[1, 2], image[2, 1], and image[2, 2].
</p><p>The original image pixel is 1, 4, 28, 30. After smoothing mask, the pixel becomes 9, 10, 9, 9 respectively.
</p><p>new image[1, 1] = <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\tfrac {1}{9}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<mn>1</mn>
<mn>9</mn>
</mfrac>
</mstyle>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\tfrac {1}{9}}}</annotation>
</semantics>
</math></span><img src="./ca7fbb8c7af3dce2f4bb214f14a76358a32a49d2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.338ex; width:1.658ex; height:3.676ex;" alt="{\displaystyle {\tfrac {1}{9}}}" loading="lazy"></span> * (image[0,0]+image[0,1]+image[0,2]+image[1,0]+image[1,1]+image[1,2]+image[2,0]+image[2,1]+image[2,2])
</p><p>new image[1, 1] = floor(<span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\tfrac {1}{9}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<mn>1</mn>
<mn>9</mn>
</mfrac>
</mstyle>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\tfrac {1}{9}}}</annotation>
</semantics>
</math></span><img src="./ca7fbb8c7af3dce2f4bb214f14a76358a32a49d2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.338ex; width:1.658ex; height:3.676ex;" alt="{\displaystyle {\tfrac {1}{9}}}" loading="lazy"></span> * (2+5+6+3+1+4+1+28+30)) = 9
</p><p>new image[1, 2] = floor({<span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\tfrac {1}{9}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<mn>1</mn>
<mn>9</mn>
</mfrac>
</mstyle>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\tfrac {1}{9}}}</annotation>
</semantics>
</math></span><img src="./ca7fbb8c7af3dce2f4bb214f14a76358a32a49d2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.338ex; width:1.658ex; height:3.676ex;" alt="{\displaystyle {\tfrac {1}{9}}}" loading="lazy"></span> * (5+6+5+1+4+6+28+30+2)) = 10
</p><p>new image[2, 1] = floor(<span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\tfrac {1}{9}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<mn>1</mn>
<mn>9</mn>
</mfrac>
</mstyle>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\tfrac {1}{9}}}</annotation>
</semantics>
</math></span><img src="./ca7fbb8c7af3dce2f4bb214f14a76358a32a49d2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.338ex; width:1.658ex; height:3.676ex;" alt="{\displaystyle {\tfrac {1}{9}}}" loading="lazy"></span> * (3+1+4+1+28+30+7+3+2)) = 9
</p><p>new image[2, 2] = floor(<span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\tfrac {1}{9}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<mn>1</mn>
<mn>9</mn>
</mfrac>
</mstyle>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\tfrac {1}{9}}}</annotation>
</semantics>
</math></span><img src="./ca7fbb8c7af3dce2f4bb214f14a76358a32a49d2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.338ex; width:1.658ex; height:3.676ex;" alt="{\displaystyle {\tfrac {1}{9}}}" loading="lazy"></span> * (1+4+6+28+30+2+3+2+2)) = 9
</p><p><b>Gray Level Histogram method</b>
</p><p>Generally, given a gray level histogram from an image as below. Changing the histogram to uniform distribution from an image is usually what we called <a href="Histogram_equalization" title="Histogram equalization">histogram equalization</a>.
</p>


<p>In discrete time, the area of gray level histogram is <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \sum _{i=0}^{k}H(p_{i})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<munderover>
<mo>∑<!-- ∑ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</munderover>
<mi>H</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>p</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \sum _{i=0}^{k}H(p_{i})}</annotation>
</semantics>
</math></span><img src="./abf8541658f07b519e88ce11222fb7653e7066f5.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:9.584ex; height:7.343ex;" alt="{\displaystyle \sum _{i=0}^{k}H(p_{i})}" loading="lazy"></span>(see figure 1) while the area of uniform distribution is <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \sum _{i=0}^{k}G(q_{i})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<munderover>
<mo>∑<!-- ∑ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</munderover>
<mi>G</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>q</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \sum _{i=0}^{k}G(q_{i})}</annotation>
</semantics>
</math></span><img src="./3315d247848798770d0f3c21a86f1dd8c6d837e1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:9.215ex; height:7.343ex;" alt="{\displaystyle \sum _{i=0}^{k}G(q_{i})}" loading="lazy"></span>(see figure 2). It is clear that the area will not change, so <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \sum _{i=0}^{k}H(p_{i})=\sum _{i=0}^{k}G(q_{i})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<munderover>
<mo>∑<!-- ∑ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</munderover>
<mi>H</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>p</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<mo>=</mo>
<munderover>
<mo>∑<!-- ∑ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</munderover>
<mi>G</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>q</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \sum _{i=0}^{k}H(p_{i})=\sum _{i=0}^{k}G(q_{i})}</annotation>
</semantics>
</math></span><img src="./f5a03a27e52e7dae4eaec2248d84c2d112021c57.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:21.897ex; height:7.343ex;" alt="{\displaystyle \sum _{i=0}^{k}H(p_{i})=\sum _{i=0}^{k}G(q_{i})}" loading="lazy"></span>.
</p><p>From the uniform distribution, the probability of <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle q_{i}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>q</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
</mrow>
</msub>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle q_{i}}</annotation>
</semantics>
</math></span><img src="./2752dcbff884354069fe332b8e51eb0a70a531b6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.837ex; height:2.009ex;" alt="{\displaystyle q_{i}}" loading="lazy"></span> is <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\tfrac {N^{2}}{q_{k}-q_{0}}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<msup>
<mi>N</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mrow>
<msub>
<mi>q</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>−<!-- − --></mo>
<msub>
<mi>q</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>0</mn>
</mrow>
</msub>
</mrow>
</mfrac>
</mstyle>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\tfrac {N^{2}}{q_{k}-q_{0}}}}</annotation>
</semantics>
</math></span><img src="./65ade21483343c9cd5b40ec715577f6d5c16bf9a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.505ex; width:5.272ex; height:4.343ex;" alt="{\displaystyle {\tfrac {N^{2}}{q_{k}-q_{0}}}}" loading="lazy"></span> while the <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 0<i<k}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mn>0</mn>
<mo>&lt;</mo>
<mi>i</mi>
<mo>&lt;</mo>
<mi>k</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle 0&lt;i&lt;k}</annotation>
</semantics>
</math></span><img src="./a10b8f01bb97f7dc0f56d3f67f22c83944b2464b.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:9.373ex; height:2.176ex;" alt="{\displaystyle 0<i<k}" loading="lazy"></span>
</p><p>In continuous time, the equation is <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \displaystyle \int _{q_{0}}^{q}{\tfrac {N^{2}}{q_{k}-q_{0}}}ds=\displaystyle \int _{p_{0}}^{p}H(s)ds}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mstyle displaystyle="true" scriptlevel="0">
<msubsup>
<mo>∫<!-- ∫ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<msub>
<mi>q</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>0</mn>
</mrow>
</msub>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi>q</mi>
</mrow>
</msubsup>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<msup>
<mi>N</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mrow>
<msub>
<mi>q</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>−<!-- − --></mo>
<msub>
<mi>q</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>0</mn>
</mrow>
</msub>
</mrow>
</mfrac>
</mstyle>
</mrow>
<mi>d</mi>
<mi>s</mi>
<mo>=</mo>
<mstyle displaystyle="true" scriptlevel="0">
<msubsup>
<mo>∫<!-- ∫ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<msub>
<mi>p</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>0</mn>
</mrow>
</msub>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi>p</mi>
</mrow>
</msubsup>
<mi>H</mi>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
<mi>d</mi>
<mi>s</mi>
</mstyle>
</mstyle>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \displaystyle \int _{q_{0}}^{q}{\tfrac {N^{2}}{q_{k}-q_{0}}}ds=\displaystyle \int _{p_{0}}^{p}H(s)ds}</annotation>
</semantics>
</math></span><img src="./13b3fefe6b5ce78e6247284089d22f16c60fc7b7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.838ex; width:25.697ex; height:6.343ex;" alt="{\displaystyle \displaystyle \int _{q_{0}}^{q}{\tfrac {N^{2}}{q_{k}-q_{0}}}ds=\displaystyle \int _{p_{0}}^{p}H(s)ds}" loading="lazy"></span>.
</p><p>Moreover, based on the definition of a function, the Gray level histogram method is like finding a function <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>f</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle f}</annotation>
</semantics>
</math></span><img src="./132e57acb643253e7810ee9702d9581f159a1c61.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.279ex; height:2.509ex;" alt="{\displaystyle f}" loading="lazy"></span> that satisfies f(p)=q.
</p>
<table class="wikitable">

<tbody><tr>
<th>Improvement method
</th>
<th>Issue
</th>
<th>Before improvement
</th>
<th>Process
</th>
<th>After improvement
</th></tr>

<tr>
<td>Smoothing method
</td>
<td>noise
<p>with Matlab, salt &amp; pepper with 0.01 parameter is added<br> to the original image in order to create a noisy image.
</p>
</td>
<td>
</td>
<td>
<ol><li>read image and convert image into grayscale</li>
<li>convolution the grayscale image with the mask <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\end{bmatrix}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow>
<mo>[</mo>
<mtable rowspacing="4pt" columnspacing="1em">
<mtr>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
<mtd>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>9</mn>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\end{bmatrix}}}</annotation>
</semantics>
</math></span><img src="./9a61c215b24aa9c824f9615efbedb4edf03ab15c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.338ex; width:18.959ex; height:9.843ex;" alt="{\displaystyle {\begin{bmatrix}1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\\1/9&amp;1/9&amp;1/9\end{bmatrix}}}" loading="lazy"></span></li>
<li>denoisy image will be the result of step 2.</li></ol>
</td>
<td>
</td></tr>

<tr>
<td>Histogram Equalization
</td>
<td>Gray level distribution too centralized
</td>
<td>
</td>
<td>Refer to the <a href="Histogram_equalization" title="Histogram equalization">Histogram equalization</a>
</td>
<td>
</td></tr>
</tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Challenges">Challenges</h2></div>
<ol><li><b>Noise and <a href="Distortion" title="Distortion">Distortions</a></b>: Imperfections in images due to poor lighting, limited sensors, and file compression can result in unclear images that impact accurate image conversion.</li>
<li><b>Variability in Image Quality</b>: Variations in image quality and resolution, including blurry images and incomplete details, can hinder uniform processing across a database.</li>
<li><b><a href="Object_detection" title="Object detection">Object Detection</a> and Recognition</b>: Identifying and recognising objects within images, especially in complex scenarios with multiple objects and occlusions, poses a significant challenge.</li>
<li><b>Data Annotation and Labelling</b>: Labelling diverse and multiple images for machine recognition is crucial for further processing accuracy, as incorrect identification can lead to unrealistic results.</li>
<li><b>Computational <a href="Resource_intensity" title="Resource intensity">Resource Intensity</a></b>: Accessing adequate computational resources for image processing can be challenging and costly, hindering progress without sufficient resources.</li></ol>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1184024115">
/* start https://en.wikipedia.org/ */


.mw-parser-output .div-col{margin-top:0.3em;column-width:30em}.mw-parser-output .div-col-small{font-size:90%}.mw-parser-output .div-col-rules{column-rule:1px solid #aaa}.mw-parser-output .div-col dl,.mw-parser-output .div-col ol,.mw-parser-output .div-col ul{margin-top:0}.mw-parser-output .div-col li,.mw-parser-output .div-col dd{page-break-inside:avoid;break-inside:avoid-column}


/* end https://en.wikipedia.org/ */
</style><div class="div-col" style="column-width: 30em;">
<ul><li><a href="Digital_imaging" title="Digital imaging">Digital imaging</a></li>
<li><a href="Computer_graphics" title="Computer graphics">Computer graphics</a></li>
<li><a href="Computer_vision" title="Computer vision">Computer vision</a></li>
<li><a href="CVIPtools" title="CVIPtools">CVIPtools</a></li>
<li><a href="Digitizing" class="mw-redirect" title="Digitizing">Digitizing</a></li>
<li><a href="Fourier_transform" title="Fourier transform">Fourier transform</a></li>
<li><a href="Free_boundary_condition" title="Free boundary condition">Free boundary condition</a></li>
<li><a href="GPGPU" class="mw-redirect" title="GPGPU">GPGPU</a></li>
<li><a href="Homomorphic_filtering" title="Homomorphic filtering">Homomorphic filtering</a></li>
<li><a href="Image_analysis" title="Image analysis">Image analysis</a></li>
<li><a href="IEEE_Intelligent_Transportation_Systems_Society" class="mw-redirect" title="IEEE Intelligent Transportation Systems Society">IEEE Intelligent Transportation Systems Society</a></li>
<li><a href="Least-squares_spectral_analysis" title="Least-squares spectral analysis">Least-squares spectral analysis</a></li>
<li><a href="Medical_imaging" title="Medical imaging">Medical imaging</a></li>
<li><a href="Multidimensional_systems" class="mw-redirect" title="Multidimensional systems">Multidimensional systems</a></li>
<li><a href="Relaxation_labelling" title="Relaxation labelling">Relaxation labelling</a></li>
<li><a href="Remote_sensing_software" title="Remote sensing software">Remote sensing software</a></li>
<li><a href="Standard_test_image" title="Standard test image">Standard test image</a></li>
<li><a href="Superresolution" class="mw-redirect" title="Superresolution">Superresolution</a></li>
<li><a href="Total_variation_denoising" title="Total variation denoising">Total variation denoising</a></li>
<li><a href="Machine_Vision" class="mw-redirect" title="Machine Vision">Machine Vision</a></li>
<li><a href="Bounded_variation" title="Bounded variation">Bounded variation</a></li>
<li><a href="Radiomics" title="Radiomics">Radiomics</a></li>
<li><a href="Remote_sensing" title="Remote sensing">Remote sensing</a></li></ul></div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFChakravorty2018" class="citation journal cs1">Chakravorty, Pragnan (2018). "What is a Signal? [Lecture Notes]". <i>IEEE Signal Processing Magazine</i>. <b>35</b> (5): <span class="nowrap">175–</span>177. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2018ISPM...35e.175C">2018ISPM...35e.175C</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FMSP.2018.2832195">10.1109/MSP.2018.2832195</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:52164353">52164353</a>.</cite></span>
</li>
<li id="cite_note-Gonzalez_2018_p.-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-Gonzalez_2018_p._2-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFGonzalez2018" class="citation book cs1">Gonzalez, Rafael (2018). <i>Digital image processing</i>. New York, NY: Pearson. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-13-335672-4</bdi>. <a href="OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/966609831">966609831</a>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite id="CITEREFNagornovLyakhovBergermanKalita2024" class="citation journal cs1">Nagornov, Nikolay N.; Lyakhov, Pavel A.; Bergerman, Maxim V.; Kalita, Diana I. (2024). <a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FACCESS.2024.3381493">"Modern Trends in Improving the Technical Characteristics of Devices and Systems for Digital Image Processing"</a>. <i>IEEE Access</i>. <b>12</b>: <span class="nowrap">44659–</span>44681. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2024IEEEA..1244659N">2024IEEEA..1244659N</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FACCESS.2024.3381493">10.1109/ACCESS.2024.3381493</a></span>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/2169-3536">2169-3536</a>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFYamniDaouiAbd_El-Latif2024" class="citation journal cs1">Yamni, Mohamed; Daoui, Achraf; Abd El-Latif, Ahmed A. (February 2024). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://linkinghub.elsevier.com/retrieve/pii/S0378475424000351">"Efficient color image steganography based on new adapted chaotic dynamical system with discrete orthogonal moment transforms"</a></span>. <i>Mathematics and Computers in Simulation</i>. <b>225</b>: <span class="nowrap">1170–</span>1198. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.matcom.2024.01.023">10.1016/j.matcom.2024.01.023</a>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFHung2020" class="citation journal cs1">Hung, Che-Lun (28 May 2020). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://www.eurekaselect.com/180828/article">"Computational Algorithms on Medical Image Processing"</a></span>. <i>Current Medical Imaging</i>. <b>16</b> (5): <span class="nowrap">467–</span>468. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.2174%2F157340561605200410144743">10.2174/157340561605200410144743</a></span>. <a href="PMID_(identifier)" class="mw-redirect" title="PMID (identifier)">PMID</a>&nbsp;<a rel="nofollow" class="external text" href="https://pubmed.ncbi.nlm.nih.gov/32484080">32484080</a>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text">Azriel Rosenfeld, <i>Picture Processing by Computer</i>, New York: Academic Press, 1969</span>
</li>
<li id="cite_note-:1-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-:1_7-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFGonzalez,_Rafael_C.2008" class="citation book cs1">Gonzalez, Rafael C. (2008). <i>Digital image processing</i>. Woods, Richard E. (Richard Eugene), 1954– (3rd&nbsp;ed.). Upper Saddle River, N.J.: Prentice Hall. pp.&nbsp;<span class="nowrap">23–</span>28. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-13-168728-8</bdi>. <a href="OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/137312858">137312858</a>.</cite></span>
</li>
<li id="cite_note-Williams-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-Williams_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Williams_8-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Williams_8-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFWilliams2017" class="citation book cs1">Williams, J. B. (2017). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=v4QlDwAAQBAJ&amp;pg=PA245"><i>The Electronics Revolution: Inventing the Future</i></a>. Springer. pp.&nbsp;<span class="nowrap">245–</span>8. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-3-319-49088-5</bdi>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1041539562">
/* start https://en.wikipedia.org/ */


.mw-parser-output .citation{word-wrap:break-word}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}


/* end https://en.wikipedia.org/ */
</style><span class="citation patent" id="CITEREFLincolnFrosch1957"><a rel="nofollow" class="external text" href="https://patents.google.com/patent/US2802760A">US2802760A</a>, Lincoln, Derick &amp; Frosch, Carl J., "Oxidation of semiconductive surfaces for controlled diffusion", issued 13 August 1957</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Apatent&amp;rft.number=US2802760A&amp;rft.cc=&amp;rft.title=Oxidation+of+semiconductive+surfaces+for+controlled+diffusion&amp;rft.inventor=Lincoln&amp;rft.date=1957-08-13"><span style="display: none;">&nbsp;</span></span></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite id="CITEREFFroschDerick1957" class="citation journal cs1">Frosch, C. J.; Derick, L (1957). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://iopscience.iop.org/article/10.1149/1.2428650">"Surface Protection and Selective Masking during Diffusion in Silicon"</a></span>. <i>Journal of the Electrochemical Society</i>. <b>104</b> (9): 547. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1149%2F1.2428650">10.1149/1.2428650</a>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFKAHNG1961" class="citation journal cs1">KAHNG, D. (1961). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://doi.org/10.1142/9789814503464_0076">"Silicon-Silicon Dioxide Surface Device"</a></span>. <i>Technical Memorandum of Bell Laboratories</i>: <span class="nowrap">583–</span>596. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1142%2F9789814503464_0076">10.1142/9789814503464_0076</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-981-02-0209-5</bdi>.</cite> <span class="cs1-hidden-error citation-comment"><code class="cs1-code">{{cite journal}}</code>: </span><span class="cs1-hidden-error citation-comment">ISBN / Date incompatibility (help)</span></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite id="CITEREFLojek2007" class="citation book cs1">Lojek, Bo (2007). <i>History of Semiconductor Engineering</i>. Berlin, Heidelberg: Springer-Verlag Berlin Heidelberg. p.&nbsp;321. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-3-540-34258-8</bdi>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite id="CITEREFLigenzaSpitzer1960" class="citation journal cs1">Ligenza, J.R.; Spitzer, W.G. (1960). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://linkinghub.elsevier.com/retrieve/pii/0022369760902195">"The mechanisms for silicon oxidation in steam and oxygen"</a></span>. <i>Journal of Physics and Chemistry of Solids</i>. <b>14</b>: <span class="nowrap">131–</span>136. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1960JPCS...14..131L">1960JPCS...14..131L</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2F0022-3697%2860%2990219-5">10.1016/0022-3697(60)90219-5</a>.</cite></span>
</li>
<li id="cite_note-Lojek1202-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-Lojek1202_14-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFLojek2007" class="citation book cs1">Lojek, Bo (2007). <i>History of Semiconductor Engineering</i>. <a href="Springer_Science_%26_Business_Media" class="mw-redirect" title="Springer Science &amp; Business Media">Springer Science &amp; Business Media</a>. p.&nbsp;120. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9783540342588</bdi>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite id="CITEREFJames_R._Janesick2001" class="citation book cs1">James R. Janesick (2001). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=3GyE4SWytn4C&amp;pg=PA3"><i>Scientific charge-coupled devices</i></a>. SPIE Press. pp.&nbsp;<span class="nowrap">3–</span>4. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-8194-3698-6</bdi>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite id="CITEREFBoyleSmith1970" class="citation journal cs1">Boyle, William S; Smith, George E. (1970). "Charge Coupled Semiconductor Devices". <i>Bell Syst. Tech. J</i>. <b>49</b> (4): <span class="nowrap">587–</span>593. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1970BSTJ...49..587B">1970BSTJ...49..587B</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2Fj.1538-7305.1970.tb01790.x">10.1002/j.1538-7305.1970.tb01790.x</a>.</cite></span>
</li>
<li id="cite_note-fossum93-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-fossum93_17-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFFossum1993" class="citation book cs1"><a href="Eric_Fossum" title="Eric Fossum">Fossum, Eric R.</a> (12 July 1993). "Active pixel sensors: Are CCDS dinosaurs?". In Blouke, Morley M. (ed.). <i>Charge-Coupled Devices and Solid State Optical Sensors III</i>. Proceedings of the SPIE. Vol.&nbsp;1900. pp.&nbsp;<span class="nowrap">2–</span>14. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1993SPIE.1900....2F">1993SPIE.1900....2F</a>. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.408.6558">10.1.1.408.6558</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1117%2F12.148585">10.1117/12.148585</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:10556755">10556755</a>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite id="CITEREFFossum2007" class="citation web cs1"><a href="Eric_Fossum" title="Eric Fossum">Fossum, Eric R.</a> (2007). <a rel="nofollow" class="external text" href="http://ericfossum.com/Publications/Papers/Active%20Pixel%20Sensors%20LASER%20FOCUS.pdf">"Active Pixel Sensors"</a> <span class="cs1-format">(PDF)</span>. <i>Eric Fossum</i>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:18831792">18831792</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190829162855/http://ericfossum.com/Publications/Papers/Active%20Pixel%20Sensors%20LASER%20FOCUS.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 29 August 2019.</cite></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><cite id="CITEREFMatsumotoNakamuraYusaNagai1985" class="citation journal cs1">Matsumoto, Kazuya; et&nbsp;al. (1985). "A new MOS phototransistor operating in a non-destructive readout mode". <i>Japanese Journal of Applied Physics</i>. <b>24</b> (5A): L323. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1985JaJAP..24L.323M">1985JaJAP..24L.323M</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1143%2FJJAP.24.L323">10.1143/JJAP.24.L323</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:108450116">108450116</a>.</cite></span>
</li>
<li id="cite_note-Fossum2014-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-Fossum2014_20-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFFossumHondongwa2014" class="citation journal cs1"><a href="Eric_Fossum" title="Eric Fossum">Fossum, Eric R.</a>; Hondongwa, D. B. (2014). <a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FJEDS.2014.2306412">"A Review of the Pinned Photodiode for CCD and CMOS Image Sensors"</a>. <i>IEEE Journal of the Electron Devices Society</i>. <b>2</b> (3): <span class="nowrap">33–</span>43. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FJEDS.2014.2306412">10.1109/JEDS.2014.2306412</a></span>.</cite></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><cite class="citation news cs1"><a rel="nofollow" class="external text" href="http://www.icinsights.com/news/bulletins/CMOS-Image-Sensor-Sales-Stay-On-RecordBreaking-Pace/">"CMOS Image Sensor Sales Stay on Record-Breaking Pace"</a>. <i>IC Insights</i>. 8 May 2018. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190621180401/http://www.icinsights.com/news/bulletins/CMOS-Image-Sensor-Sales-Stay-On-RecordBreaking-Pace/">Archived</a> from the original on 21 June 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">6 October</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><cite id="CITEREFLyon2014" class="citation book cs1"><a href="Richard_F._Lyon" title="Richard F. Lyon">Lyon, Richard F.</a> (2014). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=p_GbBQAAQBAJ&amp;pg=PA3">"The Optical Mouse: Early Biomimetic Embedded Vision"</a>. <i>Advances in Embedded Computer Vision</i>. Springer. pp.&nbsp;3–22 (3). <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9783319093871</bdi>.</cite></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><cite id="CITEREFLyon1981" class="citation book cs1"><a href="Richard_F._Lyon" title="Richard F. Lyon">Lyon, Richard F.</a> (August 1981). <a rel="nofollow" class="external text" href="http://bitsavers.trailing-edge.com/pdf/xerox/parc/techReports/VLSI-81-1_The_Optical_Mouse.pdf">"The Optical Mouse, and an Architectural Methodology for Smart Digital Sensors"</a> <span class="cs1-format">(PDF)</span>. In H. T. Kung; Robert F. Sproull; Guy L. Steele (eds.). <i>VLSI Systems and Computations</i>. Computer Science Press. pp.&nbsp;<span class="nowrap">1–</span>19. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-3-642-68402-9_1">10.1007/978-3-642-68402-9_1</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-3-642-68404-3</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:60722329">60722329</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140226021235/http://bitsavers.trailing-edge.com/pdf/xerox/parc/techReports/VLSI-81-1_The_Optical_Mouse.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 26 February 2014.</cite></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><cite id="CITEREFBrainCarmack2000" class="citation web cs1">Brain, Marshall; Carmack, Carmen (24 April 2000). <a rel="nofollow" class="external text" href="https://computer.howstuffworks.com/mouse4.htm">"How Computer Mice Work"</a>. <i><a href="HowStuffWorks" title="HowStuffWorks">HowStuffWorks</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">9 October</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-hackaday-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-hackaday_25-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFBenchoff2016" class="citation web cs1">Benchoff, Brian (17 April 2016). <a rel="nofollow" class="external text" href="http://hackaday.com/2016/04/17/building-the-first-digital-camera/">"Building the First Digital Camera"</a>. <i><a href="Hackaday" title="Hackaday">Hackaday</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">30 April</span> 2016</span>. <q>the Cyclops was the first digital camera</q></cite></span>
</li>
<li id="cite_note-Ahmed-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-Ahmed_26-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFAhmed1991" class="citation journal cs1"><a href="N._Ahmed" class="mw-redirect" title="N. Ahmed">Ahmed, Nasir</a> (January 1991). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://www.scribd.com/doc/52879771/DCT-History-How-I-Came-Up-with-the-Discrete-Cosine-Transform">"How I Came Up With the Discrete Cosine Transform"</a></span>. <i><a href="Digital_Signal_Processing_(journal)" title="Digital Signal Processing (journal)">Digital Signal Processing</a></i>. <b>1</b> (1): <span class="nowrap">4–</span>5. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1991DSP.....1....4A">1991DSP.....1....4A</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2F1051-2004%2891%2990086-Z">10.1016/1051-2004(91)90086-Z</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160610013109/https://www.scribd.com/doc/52879771/DCT-History-How-I-Came-Up-with-the-Discrete-Cosine-Transform">Archived</a> from the original on 10 June 2016<span class="reference-accessdate">. Retrieved <span class="nowrap">10 October</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-t81-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-t81_27-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.w3.org/Graphics/JPEG/itu-t81.pdf">"T.81 – Digital compression and coding of continuous-tone still images – requirements and guidelines"</a> <span class="cs1-format">(PDF)</span>. <a href="CCITT" class="mw-redirect" title="CCITT">CCITT</a>. September 1992. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190717052727/http://www.w3.org/Graphics/JPEG/itu-t81.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 17 July 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">12 July</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><cite id="CITEREFSvetlik2018" class="citation web cs1">Svetlik, Joe (31 May 2018). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190805194553/https://home.bt.com/tech-gadgets/photography/what-is-a-jpeg-11364206889349">"The JPEG image format explained"</a>. <a href="BT_Group" title="BT Group">BT Group</a>. Archived from <a rel="nofollow" class="external text" href="https://home.bt.com/tech-gadgets/photography/what-is-a-jpeg-11364206889349">the original</a> on 5 August 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">5 August</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-Atlantic-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-Atlantic_29-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFCaplan2013" class="citation web cs1">Caplan, Paul (24 September 2013). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://www.theatlantic.com/technology/archive/2013/09/what-is-a-jpeg-the-invisible-object-you-see-every-day/279954/">"What Is a JPEG? The Invisible Object You See Every Day"</a></span>. <i><a href="The_Atlantic" title="The Atlantic">The Atlantic</a></i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191009054159/https://www.theatlantic.com/technology/archive/2013/09/what-is-a-jpeg-the-invisible-object-you-see-every-day/279954/">Archived</a> from the original on 9 October 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">13 September</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-30">^</a></b></span> <span class="reference-text"><cite id="CITEREFBaraniuk2015" class="citation news cs1">Baraniuk, Chris (15 October 2015). <a rel="nofollow" class="external text" href="https://www.bbc.co.uk/news/technology-34538705">"JPeg lockdown: Restriction options sought by committee"</a>. <a href="BBC_News" title="BBC News">BBC News</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191009193610/https://www.bbc.co.uk/news/technology-34538705">Archived</a> from the original on 9 October 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">13 September</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-31">^</a></b></span> <span class="reference-text"><cite id="CITEREFNagornovLyakhovValuevaBergerman2022" class="citation journal cs1">Nagornov, Nikolay N.; Lyakhov, Pavel A.; Valueva, Maria V.; Bergerman, Maxim V. (2022). <a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FACCESS.2022.3151361">"RNS-Based FPGA Accelerators for High-Quality 3D Medical Image Wavelet Processing Using Scaled Filter Coefficients"</a>. <i>IEEE Access</i>. <b>10</b>: <span class="nowrap">19215–</span>19231. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2022IEEEA..1019215N">2022IEEEA..1019215N</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FACCESS.2022.3151361">10.1109/ACCESS.2022.3151361</a></span>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/2169-3536">2169-3536</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:246895876">246895876</a></span>. <q>Medical imaging systems produce increasingly accurate images with improved quality using higher spatial resolutions and color bit-depth. Such improvements increase the amount of information that needs to be stored, processed, and transmitted.</q></cite></span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-32">^</a></b></span> <span class="reference-text"><cite id="CITEREFDhouibNaït-AliOlivierNaceur2021" class="citation journal cs1">Dhouib, D.; Naït-Ali, A.; Olivier, C.; Naceur, M.S. (June 2021). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://linkinghub.elsevier.com/retrieve/pii/S1959031820300853">"ROI-Based Compression Strategy of 3D MRI Brain Datasets for Wireless Communications"</a></span>. <i>IRBM</i>. <b>42</b> (3): <span class="nowrap">146–</span>153. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.irbm.2020.05.001">10.1016/j.irbm.2020.05.001</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:219437400">219437400</a>. <q>Because of the large amount of medical imaging data, the transmission process becomes complicated in telemedicine applications. Thus, in order to adapt the data bit streams to the constraints related to the limitation of the bandwidths a reduction of the size of the data by compression of the images is essential.</q></cite></span>
</li>
<li id="cite_note-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-33">^</a></b></span> <span class="reference-text"><cite id="CITEREFXinFan2021" class="citation journal cs1">Xin, Gangtao; Fan, Pingyi (11 June 2021). <a rel="nofollow" class="external text" href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8196061">"A lossless compression method for multi-component medical images based on big data mining"</a>. <i>Scientific Reports</i>. <b>11</b> (1): 12372. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1038%2Fs41598-021-91920-x">10.1038/s41598-021-91920-x</a></span>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/2045-2322">2045-2322</a>. <a href="PMC_(identifier)" class="mw-redirect" title="PMC (identifier)">PMC</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8196061">8196061</a></span>. <a href="PMID_(identifier)" class="mw-redirect" title="PMID (identifier)">PMID</a>&nbsp;<a rel="nofollow" class="external text" href="https://pubmed.ncbi.nlm.nih.gov/34117350">34117350</a>.</cite></span>
</li>
<li id="cite_note-Grant-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-Grant_34-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFGrantGowar1989" class="citation book cs1">Grant, Duncan Andrew; Gowar, John (1989). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=ZiZTAAAAMAAJ"><i>Power MOSFETS: theory and applications</i></a>. <a href="Wiley_(publisher)" title="Wiley (publisher)">Wiley</a>. p.&nbsp;1. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-471-82867-9</bdi>. <q>The metal–oxide–semiconductor field-effect transistor (MOSFET) is the most commonly used active device in the very large-scale integration of digital integrated circuits (VLSI). During the 1970s these components revolutionized electronic signal processing, control systems and computers.</q></cite></span>
</li>
<li id="cite_note-ieee-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-ieee_35-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFShirriff2016" class="citation journal cs1">Shirriff, Ken (30 August 2016). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://spectrum.ieee.org/the-surprising-story-of-the-first-microprocessors">"The Surprising Story of the First Microprocessors"</a></span>. <i><a href="IEEE_Spectrum" title="IEEE Spectrum">IEEE Spectrum</a></i>. <b>53</b> (9). <a href="Institute_of_Electrical_and_Electronics_Engineers" title="Institute of Electrical and Electronics Engineers">Institute of Electrical and Electronics Engineers</a>: <span class="nowrap">48–</span>54. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FMSPEC.2016.7551353">10.1109/MSPEC.2016.7551353</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:32003640">32003640</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191013012248/https://spectrum.ieee.org/tech-history/silicon-revolution/the-surprising-story-of-the-first-microprocessors">Archived</a> from the original on 13 October 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">13 October</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-computerhistory1979-36"><span class="mw-cite-backlink">^ <a href="#cite_ref-computerhistory1979_36-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-computerhistory1979_36-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.computerhistory.org/siliconengine/single-chip-digital-signal-processor-introduced/">"1979: Single Chip Digital Signal Processor Introduced"</a>. <i>The Silicon Engine</i>. <a href="Computer_History_Museum" title="Computer History Museum">Computer History Museum</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191003072500/https://www.computerhistory.org/siliconengine/single-chip-digital-signal-processor-introduced/">Archived</a> from the original on 3 October 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">14 October</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-Taranovich-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-Taranovich_37-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFTaranovich2012" class="citation web cs1">Taranovich, Steve (27 August 2012). <a rel="nofollow" class="external text" href="https://www.edn.com/design/systems-design/4394792/30-years-of-DSP--From-a-child-s-toy-to-4G-and-beyond">"30 years of DSP: From a child's toy to 4G and beyond"</a>. <i><a href="EDN_(magazine)" title="EDN (magazine)">EDN</a></i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191014044347/https://www.edn.com/design/systems-design/4394792/30-years-of-DSP--From-a-child-s-toy-to-4G-and-beyond">Archived</a> from the original on 14 October 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">14 October</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-Stankovic-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-Stankovic_38-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFStankovićAstola2012" class="citation journal cs1">Stanković, Radomir S.; Astola, Jaakko T. (2012). <a rel="nofollow" class="external text" href="http://ticsp.cs.tut.fi/reports/ticsp-report-60-reprint-rao-corrected.pdf">"Reminiscences of the Early Work in DCT: Interview with K.R. Rao"</a> <span class="cs1-format">(PDF)</span>. <i>Reprints from the Early Days of Information Sciences</i>. <b>60</b>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191013204147/http://ticsp.cs.tut.fi/reports/ticsp-report-60-reprint-rao-corrected.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 13 October 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">13 October</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-:0-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-:0_39-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFZhangLivingstonAsari2008" class="citation journal cs1">Zhang, M. Z.; Livingston, A. R.; Asari, V. K. (2008). "A High Performance Architecture for Implementation of 2-D Convolution with Quadrant Symmetric Kernels". <i>International Journal of Computers and Applications</i>. <b>30</b> (4): <span class="nowrap">298–</span>308. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1080%2F1206212x.2008.11441909">10.1080/1206212x.2008.11441909</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:57289814">57289814</a>.</cite></span>
</li>
<li id="cite_note-Gonzalez_2008-40"><span class="mw-cite-backlink">^ <a href="#cite_ref-Gonzalez_2008_40-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Gonzalez_2008_40-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGonzalez2008" class="citation book cs1">Gonzalez, Rafael (2008). <i>Digital Image Processing, 3rd</i>. Pearson Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-13-168728-8</bdi>.</cite></span>
</li>
<li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><cite id="CITEREFHouse,_Keyser2016" class="citation book cs1">House, Keyser (6 December 2016). <a rel="nofollow" class="external text" href="https://people.cs.clemson.edu/~dhouse/courses/401/notes/affines-matrices.pdf"><i>Affine Transformations</i></a> <span class="cs1-format">(PDF)</span>. Foundations of Physically Based Modeling &amp; Animation. A K Peters/CRC Press. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-4822-3460-2</bdi>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170830052734/https://people.cs.clemson.edu/~dhouse/courses/401/notes/affines-matrices.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 30 August 2017<span class="reference-accessdate">. Retrieved <span class="nowrap">26 March</span> 2019</span>.</cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{cite book}}</code>: </span><span class="cs1-visible-error citation-comment"><code class="cs1-code">|website=</code> ignored (help)</span></span>
</li>
<li id="cite_note-42"><span class="mw-cite-backlink"><b><a href="#cite_ref-42">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.beanblossom.in.us/larryy/cgi.html">A Brief, Early History of Computer Graphics in Film</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120717074134/http://www.beanblossom.in.us/larryy/cgi.html">Archived</a> 17 July 2012 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>, <a href="Larry_Yaeger" title="Larry Yaeger">Larry Yaeger</a>, 16 August 2002 (last update), retrieved 24 March 2010</span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<ul><li><cite id="CITEREFSolomon,_C.J.Breckon,_T.P.2010" class="citation book cs1">Solomon, C.J.; Breckon, T.P. (2010). <i>Fundamentals of Digital Image Processing: A Practical Approach with Examples in Matlab</i>. Wiley-Blackwell. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2F9780470689776">10.1002/9780470689776</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-470-84473-1</bdi>.</cite></li>
<li><cite id="CITEREFWilhelm_BurgerMark_J._Burge2007" class="citation book cs1">Wilhelm Burger; Mark J. Burge (2007). <a rel="nofollow" class="external text" href="http://www.imagingbook.com/"><i>Digital Image Processing: An Algorithmic Approach Using Java</i></a>. <a href="Springer_Science%2BBusiness_Media" title="Springer Science+Business Media">Springer</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-84628-379-6</bdi>.</cite></li>
<li><cite id="CITEREFR._FisherK_Dawson-HoweA._FitzgibbonC._Robertson2005" class="citation book cs1">R. Fisher; K Dawson-Howe; A. Fitzgibbon; C. Robertson; E. Trucco (2005). <i>Dictionary of Computer Vision and Image Processing</i>. John Wiley. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-470-01526-1</bdi>.</cite></li>
<li><cite id="CITEREFRafael_C._GonzalezRichard_E._WoodsSteven_L._Eddins2004" class="citation book cs1">Rafael C. Gonzalez; Richard E. Woods; Steven L. Eddins (2004). <i>Digital Image Processing using MATLAB</i>. Pearson Education. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-81-7758-898-9</bdi>.</cite></li>
<li><cite id="CITEREFTim_Morris2004" class="citation book cs1">Tim Morris (2004). <i>Computer Vision and Image Processing</i>. Palgrave Macmillan. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-333-99451-1</bdi>.</cite></li>
<li><cite id="CITEREFVipin_Tyagi2018" class="citation book cs1">Vipin Tyagi (2018). <i>Understanding Digital Image Processing</i>. Taylor and Francis CRC Press. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-11-3856-6842</bdi>.</cite></li>
<li><cite id="CITEREFMilan_SonkaVaclav_HlavacRoger_Boyle1999" class="citation book cs1">Milan Sonka; Vaclav Hlavac; Roger Boyle (1999). <i>Image Processing, Analysis, and Machine Vision</i>. PWS Publishing. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-534-95393-5</bdi>.</cite></li>
<li><cite id="CITEREFGonzalezWoods2008" class="citation book cs1">Gonzalez, Rafael C.; Woods, Richard E. (2008). <i>Digital image processing</i>. Upper Saddle River, N.J.: Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-13-168728-8</bdi>. <a href="OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/137312858">137312858</a>.</cite></li>
<li><cite id="CITEREFKovalevsky2019" class="citation book cs1">Kovalevsky, Vladimir (2019). <i>Modern algorithms for image processing: computer imagery by example using C#</i>. [New York, New York]. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-4842-4237-7</bdi>. <a href="OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/1080084533">1080084533</a>.</cite><span class="cs1-maint citation-comment"><code class="cs1-code">{{cite book}}</code>: CS1 maint: location missing publisher (link)</span></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://archive.org/details/Lectures_on_Image_Processing">Lectures on Image Processing</a>, by Alan Peters. Vanderbilt University. Updated 7 January 2016.</li>
<li><a rel="nofollow" class="external text" href="http://www.mathworks.com/discovery/digital-image-processing.html">Processing digital images with computer algorithms</a></li>
<li><a rel="nofollow" class="external text" href="https://www.informatika.web.id/2013/10/pengertian-citra-digital-pemahaman.html">Pengertian Citra Digital: Pemahaman Dasar dan Penerapannya dalam Teknologi</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Computer_vision148" style="padding:3px"><table class="nowraplinks mw-collapsible expanded navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="Computer_vision148" style="font-size:114%;margin:0 4em"><a href="Computer_vision" title="Computer vision">Computer vision</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Categories</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>Datasets</li>
<li><a href="Digital_geometry" title="Digital geometry">Digital geometry</a></li>
<li>Commercial systems</li>
<li>Feature detection</li>
<li>Geometry</li>
<li>Image sensor technology</li>
<li>Learning</li>
<li><a href="Mathematical_morphology" title="Mathematical morphology">Morphology</a></li>
<li>Motion analysis</li>
<li>Noise reduction techniques</li>
<li>Recognition and categorization</li>
<li>Research infrastructure</li>
<li>Researchers</li>
<li>Segmentation</li>
<li>Software</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Technologies</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Computer_stereo_vision" title="Computer stereo vision">Computer stereo vision</a></li>
<li><a href="Motion_capture" title="Motion capture">Motion capture</a></li>
<li><a href="Outline_of_object_recognition" title="Outline of object recognition">Object recognition</a>
<ul><li><a href="3D_object_recognition" title="3D object recognition">3D object recognition</a></li></ul></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Applications</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th id="3D_reconstruction21" scope="row" class="navbox-group" style="width:1%"><a href="3D_reconstruction" title="3D reconstruction">3D reconstruction</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="3D_reconstruction_from_multiple_images" title="3D reconstruction from multiple images">3D reconstruction from multiple images</a></li>
<li><a href="2D_to_3D_conversion" title="2D to 3D conversion">2D to 3D conversion</a></li>
<li><a href="Gaussian_splatting" title="Gaussian splatting">Gaussian splatting</a></li>
<li><a href="Neural_radiance_field" title="Neural radiance field">Neural radiance field</a></li>
<li><a href="Shape_from_focus" title="Shape from focus">Shape from focus</a></li>
<li><a href="Simultaneous_localization_and_mapping" title="Simultaneous localization and mapping">Simultaneous localization and mapping</a></li>
<li><a href="Structure_from_motion" title="Structure from motion">Structure from motion</a></li>
<li><a href="View_synthesis" title="View synthesis">View synthesis</a></li>
<li><a href="Visual_hull" title="Visual hull">Visual hull</a></li>
<li><a href="4D_reconstruction" title="4D reconstruction">4D reconstruction</a>
<ul><li><a href="Free_viewpoint_television" title="Free viewpoint television">Free viewpoint television</a></li>
<li><a href="Volumetric_capture" title="Volumetric capture">Volumetric capture</a></li></ul></li></ul>
</div></td></tr></tbody></table><div>
<ul><li><a href="3D_pose_estimation" title="3D pose estimation">3D pose estimation</a></li>
<li><a href="Activity_recognition" title="Activity recognition">Activity recognition</a></li>
<li><a href="Audio-visual_speech_recognition" title="Audio-visual speech recognition">Audio-visual speech recognition</a></li>
<li><a href="Automatic_image_annotation" title="Automatic image annotation">Automatic image annotation</a></li>
<li><a href="Automatic_number-plate_recognition" title="Automatic number-plate recognition">Automatic number-plate recognition</a></li>
<li><a href="Automated_species_identification" title="Automated species identification">Automated species identification</a></li>
<li><a href="Augmented_reality" title="Augmented reality">Augmented reality</a></li>
<li><a href="Bioimage_informatics" title="Bioimage informatics">Bioimage informatics</a></li>
<li><a href="Blob_detection" title="Blob detection">Blob detection</a></li>
<li><a href="Computer-aided_diagnosis" title="Computer-aided diagnosis">Computer-aided diagnosis</a></li>
<li><a href="Content-based_image_retrieval" title="Content-based image retrieval">Content-based image retrieval</a>
<ul><li><a href="Reverse_image_search" title="Reverse image search">Reverse image search</a></li></ul></li>
<li><a href="Eye_tracking" title="Eye tracking">Eye tracking</a></li>
<li><a href="Facial_recognition_system" title="Facial recognition system">Face recognition</a></li>
<li><a href="Foreground_detection" title="Foreground detection">Foreground detection</a></li>
<li><a href="Gesture_recognition" title="Gesture recognition">Gesture recognition</a></li>
<li><a href="Image_denoising" class="mw-redirect" title="Image denoising">Image denoising</a></li>
<li><a href="Image_restoration_by_artificial_intelligence" title="Image restoration by artificial intelligence">Image restoration</a></li>
<li><a href="Landmark_detection" title="Landmark detection">Landmark detection</a></li>
<li><a href="Medical_image_computing" title="Medical image computing">Medical image computing</a></li>
<li><a href="Object_detection" title="Object detection">Object detection</a>
<ul><li><a href="Moving_object_detection" title="Moving object detection">Moving object detection</a></li>
<li><a href="Small_object_detection" title="Small object detection">Small object detection</a></li></ul></li>
<li><a href="Optical_character_recognition" title="Optical character recognition">Optical character recognition</a></li>
<li><a href="Pose_tracking" title="Pose tracking">Pose tracking</a></li>
<li><a href="Remote_sensing" title="Remote sensing">Remote sensing</a></li>
<li><a href="Robotic_mapping" title="Robotic mapping">Robotic mapping</a></li>
<li><a href="Self-driving_car" title="Self-driving car">Autonomous vehicles</a></li>
<li><a href="Video_content_analysis" title="Video content analysis">Video content analysis</a></li>
<li><a href="Video_motion_analysis" title="Video motion analysis">Video motion analysis</a></li>
<li><a href="Artificial_intelligence_for_video_surveillance" title="Artificial intelligence for video surveillance">Video surveillance</a></li>
<li><a href="Video_tracking" title="Video tracking">Video tracking</a></li></ul></div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div><b>Main category</b></div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Digital_signal_processing96" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Digital_signal_processing96" style="font-size:114%;margin:0 4em"><a href="Digital_signal_processing" title="Digital signal processing">Digital signal processing</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Theory</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Detection_theory" title="Detection theory">Detection theory</a></li>
<li><a href="Discrete_time_and_continuous_time" title="Discrete time and continuous time">Discrete signal</a></li>
<li><a href="Estimation_theory" title="Estimation theory">Estimation theory</a></li>
<li><a href="Nyquist%E2%80%93Shannon_sampling_theorem" title="Nyquist–Shannon sampling theorem">Nyquist–Shannon sampling theorem</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Sub-fields</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Audio_signal_processing" title="Audio signal processing">Audio signal processing</a></li>

<li><a href="Speech_processing" title="Speech processing">Speech processing</a></li>
<li><a href="Statistical_signal_processing" class="mw-redirect" title="Statistical signal processing">Statistical signal processing</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Techniques</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Z-transform" title="Z-transform">Z-transform</a>
<ul><li><a href="Advanced_z-transform" title="Advanced z-transform">Advanced z-transform</a></li>
<li><a href="Matched_Z-transform_method" title="Matched Z-transform method">Matched Z-transform method</a></li></ul></li>
<li><a href="Bilinear_transform" title="Bilinear transform">Bilinear transform</a></li>
<li><a href="Constant-Q_transform" title="Constant-Q transform">Constant-Q transform</a></li>
<li><a href="Discrete_cosine_transform" title="Discrete cosine transform">Discrete cosine transform</a> (DCT)</li>
<li><a href="Discrete_Fourier_transform" title="Discrete Fourier transform">Discrete Fourier transform</a> (DFT)</li>
<li><a href="Discrete-time_Fourier_transform" title="Discrete-time Fourier transform">Discrete-time Fourier transform</a> (DTFT)</li>
<li><a href="Impulse_invariance" title="Impulse invariance">Impulse invariance</a></li>
<li><a href="Integral_transform" title="Integral transform">Integral transform</a></li>
<li><a href="Laplace_transform" title="Laplace transform">Laplace transform</a></li>
<li><a href="Post's_inversion_formula" class="mw-redirect" title="Post's inversion formula">Post's inversion formula</a></li>
<li><a href="Starred_transform" title="Starred transform">Starred transform</a></li>
<li><a href="Zak_transform" title="Zak transform">Zak transform</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Sampling_(signal_processing)" title="Sampling (signal processing)">Sampling</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Aliasing" title="Aliasing">Aliasing</a></li>
<li><a href="Anti-aliasing_filter" title="Anti-aliasing filter">Anti-aliasing filter</a></li>
<li><a href="Downsampling_(signal_processing)" title="Downsampling (signal processing)">Downsampling</a></li>
<li><a href="Nyquist_rate" title="Nyquist rate">Nyquist rate</a> / <a href="Nyquist_frequency" title="Nyquist frequency">frequency</a></li>
<li><a href="Oversampling" title="Oversampling">Oversampling</a></li>
<li><a href="Quantization_(signal_processing)" title="Quantization (signal processing)">Quantization</a></li>
<li><a href="Sampling_rate" class="mw-redirect" title="Sampling rate">Sampling rate</a></li>
<li><a href="Undersampling" title="Undersampling">Undersampling</a></li>
<li><a href="Upsampling" title="Upsampling">Upsampling</a></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Information_processing141" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Information_processing141" style="font-size:114%;margin:0 4em"><a href="Information_technology" title="Information technology">Information processing</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Information processes</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">information processes by function</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Perception" title="Perception">perception</a></li>
<li><a href="Attention" title="Attention">attention</a></li>
<li><a href="Social_influence" title="Social influence">influence</a></li>
<li><a href="Remote_control" title="Remote control">operating</a></li>
<li><a href="Communication" title="Communication">communication</a></li>
<li><a href="Reason" title="Reason">reasoning</a></li>
<li><a href="Learning" title="Learning">learning</a></li>
<li><a href="Information_storage" class="mw-redirect" title="Information storage">storing</a></li>
<li><a href="Decision-making" title="Decision-making">decision-making</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">information processing abstractions</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Event_processing" class="mw-redirect" title="Event processing">event processing</a></li>
<li><a href="Semiotics" title="Semiotics">sign processesing</a></li>
<li><a href="Signal" title="Signal">signal processing</a></li>
<li><a href="Data_processing" title="Data processing">data processing</a></li>
<li><a href="Stream_processing" title="Stream processing">stream processing</a></li>
<li><a href="Multi-agent_system" title="Multi-agent system">agent processing</a></li>
<li><a href="State_(computer_science)" title="State (computer science)">state processing</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Information processors</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">natural</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Natural_computing#Nature_as_information_processing" title="Natural computing">nature as information processing</a></li>
<li><a href="Information_processing_theory#Humans_as_Information_Processing_Systems" title="Information processing theory">humans as information processing systems</a></li>
<li><a href="Social_information_processing" title="Social information processing">society as information processing system</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">mixed</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Mixed_reality" class="mw-redirect" title="Mixed reality">mixed reality</a></li>
<li><a href="Brain%E2%80%93computer_interface" title="Brain–computer interface">brain–computer interface</a></li>
<li><a href="Physical_computing" title="Physical computing">physical computing</a></li>
<li><a href="Human%E2%80%93computer_interaction" title="Human–computer interaction">human–computer interaction</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">artificial</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Processor_(computing)" title="Processor (computing)">processors</a> and <a href="Process_(computing)" title="Process (computing)">processes</a></li>
<li><a href="Bio-inspired_computing" title="Bio-inspired computing">bio-inspired computing</a></li>
<li><a href="Ubiquitous_computing" title="Ubiquitous computing">ubiquitous computing</a></li>
<li><a href="Artificial_brain" title="Artificial brain">artificial brain</a> and <a href="Mind_uploading" title="Mind uploading">mind uploading</a></li>
<li><a href="Virtual_reality" title="Virtual reality">virtual reality</a></li>
<li><a href="Virtual_world" title="Virtual world">virtual world</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Information processing <br>theories and concepts</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">in biology</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Computational_biology" title="Computational biology">computational</a> and <a href="Systems_biology" title="Systems biology">systems biology</a></li>
<li><a href="Genome_informatics" title="Genome informatics">genetic informatics</a> and <a href="Cellular_computing" class="mw-redirect" title="Cellular computing">cellular computing</a></li>
<li><a href="Computational_neuroscience" title="Computational neuroscience">computational neuroscience</a> and <a href="Neurocomputing" class="mw-redirect" title="Neurocomputing">neurocomputing</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">in cognitive psychology</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Information_processing_theory" title="Information processing theory">information processing theory</a></li>
<li><a href="Mind" title="Mind">mind</a> and <a href="Intelligence" title="Intelligence">intelligence</a></li>
<li><a href="Cognitive_informatics" class="mw-redirect" title="Cognitive informatics">cognitive informatics</a> and <a href="Neuroinformatics" title="Neuroinformatics">neuroinformatics</a></li>
<li><a href="Behavior_informatics" title="Behavior informatics">behavior informatics</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">in computer science</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Neural_computation" title="Neural computation">neural computation</a></li>
<li><a href="Theory_of_computation" title="Theory of computation">computation theory</a></li>
<li><a href="Algorithms" class="mw-redirect" title="Algorithms">algorithms</a> and <a href="Information_structure" title="Information structure">information structures</a></li>
<li><a href="Circuit_(computer_science)" title="Circuit (computer science)">computational circuits</a></li>
<li><a href="Artificial_intelligence" title="Artificial intelligence">artificial intelligence</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">in philosophy</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Computational_theory_of_mind" title="Computational theory of mind">computational theory of mind</a></li>
<li><a href="Philosophy_of_information" title="Philosophy of information">philosophy of information</a></li>
<li><a href="Philosophy_of_artificial_intelligence" title="Philosophy of artificial intelligence">philosophy of artificial intelligence</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">interdisciplinary</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Information_theory" title="Information theory">information theory</a></li>
<li><a href="Decision_theory" title="Decision theory">decision theory</a></li>
<li><a href="Systems_theory" title="Systems theory">systems theory</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">other</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Infosphere" title="Infosphere">infosphere</a></li>
<li><a href="Inforg" title="Inforg">inforg</a></li>
<li><i><a href="Decoding_the_Universe" title="Decoding the Universe">Decoding the Universe</a></i></li>
<li><a href="Information_overload" title="Information overload">information overload</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr></tbody></table></div>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1038841319">
/* start https://en.wikipedia.org/ */


.mw-parser-output .tooltip-dotted{border-bottom:1px dotted;cursor:help}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox authority-control" aria-label="Navbox1011" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Authority control databases: National </th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><span class="rt-commentedText tooltip tooltip-dotted" title="digitální zpracování obrazu"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&amp;local_base=aut&amp;ccl_term=ica=ph119463&amp;CON_LNG=ENG">Czech Republic</a></span></span><ul><li><span class="uid"><span class="rt-commentedText tooltip tooltip-dotted" title="počítačové zpracování obrazu"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&amp;local_base=aut&amp;ccl_term=ica=ph171357&amp;CON_LNG=ENG">2</a></span></span></li></ul></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://kopkatalogs.lv/F?func=direct&amp;local_base=lnc10&amp;doc_number=000060687&amp;P_CON_LNG=ENG">Latvia</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-13" href="https://en.wikipedia.org/wiki/?title=Digital_image_processing&amp;oldid=1300317750">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>